C언어
[ec/esql/pc/proc/프로씨강좌] 호스트변수 구조체에 값넣기
xemaker
2017. 2. 21. 18:58
EXEC SQL BEGIN DECLARE SECTION;
typedef struct
{
char a[100];
char b[100];
} S;
EXEC SQL END DECLARE SECTION;
void test(p)
$PARAMETER *p;
{
$char work1[100];
$char work2[100];
memset(work1,0x00,sizeof(work1));
memset(work2,0x00,sizeof(work2));memcpy(work2,"a2",sizeof(work2));
EXEC SQL connect to "dbname";
EXEC SQL DECLARE test_cur SCROLL CURSOR FOR
SELECT a
FROM test
WHERE a=:p
;
//포인터변수로 사용한다.
EXEC SQL OPEN test_cur;
while(1){
$S s;
memset (&s,0x00,sizeof (S));
EXEC SQL FETCH NEXT test_cur INTO :s;
//이런식으로 구조체에 바로 값을 넣을 수 있다
if(sqlca.sqlcode==100){
break;
}else if(sqlca.sqlcode!=0)
printf("error=[%d]\n",sqlca.sqlcode);
}
printf("s.a=[%s]\n",s.a;
}
EXEC SQL CLOSE test_cur;
EXEC SQL FREE test_cur;
}
main(int argc, char *argv[]){
char p [100];
memset(&p,0x00,sizeof(p));
memcpy(p,"a3",sizeof(p));
test(&); //포인터를 넘겨준다.
}
여기서 c변수를 넘기면 호스트변수로 받을 수 있다.
$S s;
처럼 db에서 사용 되는 호스트 변수는 $를 빼먹지 말아야 한다.
만약 빼먹으면 Object 's' was not declared. 라고 나온다
typedef struct
{
char a[100];
char b[100];
} S;
EXEC SQL END DECLARE SECTION;
void test(p)
$PARAMETER *p;
{
$char work1[100];
$char work2[100];
memset(work1,0x00,sizeof(work1));
memset(work2,0x00,sizeof(work2));memcpy(work2,"a2",sizeof(work2));
EXEC SQL connect to "dbname";
EXEC SQL DECLARE test_cur SCROLL CURSOR FOR
SELECT a
FROM test
WHERE a=:p
;
//포인터변수로 사용한다.
EXEC SQL OPEN test_cur;
while(1){
$S s;
memset (&s,0x00,sizeof (S));
EXEC SQL FETCH NEXT test_cur INTO :s;
//이런식으로 구조체에 바로 값을 넣을 수 있다
if(sqlca.sqlcode==100){
break;
}else if(sqlca.sqlcode!=0)
printf("error=[%d]\n",sqlca.sqlcode);
}
printf("s.a=[%s]\n",s.a;
}
EXEC SQL CLOSE test_cur;
EXEC SQL FREE test_cur;
}
main(int argc, char *argv[]){
char p [100];
memset(&p,0x00,sizeof(p));
memcpy(p,"a3",sizeof(p));
test(&); //포인터를 넘겨준다.
}
여기서 c변수를 넘기면 호스트변수로 받을 수 있다.
$S s;
처럼 db에서 사용 되는 호스트 변수는 $를 빼먹지 말아야 한다.
만약 빼먹으면 Object 's' was not declared. 라고 나온다