안녕하세요... 처음 해보다 보니 막혀서요.. 염치불구하고 한수 부탁드립니다..
아래는 제가 postgresql 접속해서 테이블의 값을 가지고 오려고 만든 함수입니다.
문제는,
/*------- dbConnect() : sql variable -------*/
EXEC SQL include sqlca;
EXEC SQL begin declare section;
char msg_array[20];
long currenttime;
int serverid;
char account[25];
char reason[30];
char charname[25];
EXEC SQL end declare section;
/*------------------ end -------------------*/
int dbConnect(char* retValue)
{
char temp_retValue[20];
sprintf(temp_retValue, "%s", retValue);
msg_array[20] = temp_retValue;
ECPGdebug(1, stderr);
EXEC SQL CONNECT TO punish
USER leehaesung;
//------- 3. search and fetch right values
EXEC SQL begin work;
EXEC SQL declare mycursor cursor for
SELECT serverid, account, reason, charname
FROM table
WHERE currenttime > (:msg_array::timestamp without time zone - '10 day'::interval)::date; <------- 1. 이 부분의 msg_array변수 사용
EXEC SQL open mycursor;
EXEC SQL fetch next from mycursor into :serverid, :account, :reason, :charname;
while (sqlca.sqlcode == 0) // if is true(sqlca.sqlcode == 0 ), normal!!
{
//printf("currenttime : %l\n", currenttime); <-------- 2. 들어오는 currenttime의 타입
printf("serverid : %d\n", serverid);
printf("account : %s\n", account);
printf("reason : %s\n", reason);
printf("charname : %s\n", charname);
sendMessage(serverid, account, reason, charname);
EXEC SQL fetch next from mycursor into :serverid, :account, :reason, :charname;
}
EXEC SQL close mycursor;
EXEC SQL commit work;
EXEC SQL disconnect all;
return 0;
}
1. 변수를 넣긴 넣었는데 에러가 나네요... 받은 msg_array 변수의 값에서 10일을 빼서 그 이후의 값들만 가져오려고 한 부분입니다.
2. currenttime timestamp의 타입을 어떻게 받아야 할지요 ;; %d, %s %l 해봤는데 ;; 잘 모르겠네요..
소스 보시기 힘드시겠지만 한수 좀 부탁드려요...
모두들 좋은 밤 되셔요^^
|