안녕하세요.. 보통 아래와 같은 구문으로 프로그램을 하잖아여.. EXEC SQL PREPARE tst_pre FROM "select ...."; if( sqlca.sqlcode != 0 ) { printf("prepare error\n"); exit(1); } EXEC SQL DECLARE tst_cur CURSOR FOR tst_pre; if( sqlca.sqlcode != 0 ) { printf("declare error\n"); exit(1); } EXEC SQL OPEN tst_cur; if( sqlca.sqlcode != 0 ) { printf("open error\n"); exit(1); } EXEC SQL FETCH tst_cur INTO :tst_var; while( 1 ) { if( sqlca.sqlcode != 0 ) { EXEC SQL CLOSE tst_cur; EXEC SQL FREE tst_pre; EXEC SQL FREE tst_cur; printf("fetch error\n"); exit(1); } } EXEC SQL CLOSE tst_cur; EXEC SQL FREE tst_pre; EXEC SQL FREE tst_cur; 질문 1) 아래와 같이 prepare문을 안썼을경우 효율면에서 어느정도 차이가 나나여? EXEC SQL DECLARE tst_cur CURSOR FOR select ....; if( sqlca.sqlcode != 0 ) { printf("declare error\n"); exit(1); } EXEC SQL OPEN tst_cur; if( sqlca.sqlcode != 0 ) { printf("open error\n"); exit(1); } EXEC SQL FETCH tst_cur INTO :tst_var; while( 1 ) { if( sqlca.sqlcode != 0 ) { EXEC SQL CLOSE tst_cur; EXEC SQL FREE tst_cur; printf("fetch error\n"); exit(1); } } EXEC SQL CLOSE tst_cur; EXEC SQL FREE tst_cur; 질문2) 아래와 같이 declare, open시 에러일경우 prepare하고 cursor을 free 안해줘도 되나여? EXEC SQL PREPARE tst_pre FROM "select ...."; if( sqlca.sqlcode != 0 ) { printf("prepare error\n"); exit(1); } EXEC SQL DECLARE tst_cur CURSOR FOR tst_pre; if( sqlca.sqlcode != 0 ) { EXEC SQL FREE tst_pre; printf("declare error\n"); exit(1); } EXEC SQL OPEN tst_cur; if( sqlca.sqlcode != 0 ) { EXEC SQL FREE tst_pre; EXEC SQL FREE tst_cur; printf("open error\n"); exit(1); } EXEC SQL FETCH tst_cur INTO :tst_var; while( 1 ) { if( sqlca.sqlcode != 0 ) { EXEC SQL CLOSE tst_cur; EXEC SQL FREE tst_pre; EXEC SQL FREE tst_cur; printf("fetch error\n"); exit(1); } } EXEC SQL CLOSE tst_cur; EXEC SQL FREE tst_pre; EXEC SQL FREE tst_cur; |