#include <sys/errno.h>
#include <stdio.h>
#include <netdb.h>
#include <string.h>
#define sql_msg sqlca.sqlerrm.sqlerrmc
EXEC SQL INCLUDE sqlca.h;
main() {
sqlEnv();
sqlLinitial();
sql_insert();
}
sqlEnv() {
char Env[100];
putenv("NLS_LANG=American_America.K016KSC5601");
sprintf(Env, "ORACLE_SIC=%S", "ORCL");
putenv(Env);
putenv("ORACLE_HOME=/oracle");
}
sqlLinitial() {
strncpy(userid.arr, "id", strlen("id"));
userid.len = strlen(userid.arr);
strncpy(passwd.arr, "password", strlen("password"));
userid.len = strlen(passwd.arr);
EXEC SQL connect :userid identified by :passwd;
EXEC SQL WHENEVER SQLERROR GOTO stop_st;
printf("\n Sqlplus initial Success\n");
}
sql_insert() {
EXEC SQL BEGIN DECLARE SECTION;
number user_no[4];
varchar user_name[10];
varchar user_data[10];
EXEC SQL END DECLARE SECTION;
memset(Sqlcmd, 0x00, sizeof(Sqlcmd));
sprintf(Sqlcmd, "INSERT INTO mytable (user_no, user_name, user_data) \
VALUES (%d, %s, %s)", \
10, "chonbj", "seoul");
EXEC SQL EXECUTE IMMEDIATE :Sqlcmd;
//EXEC SQL WHENEVER SQLERROR GOTO stop_st;
printf("\n insert success");
EXEC SQL COMMIT WORK;
stop_st :
EXEC SQL ROLLBACK WORK;
printf("\n error message = %s", sql_msg);
}
이렇게 해서 컴파일을 하니까....
/export/home/OraHome1/lib/libclntsh.so' is up to date 라고 나오고 실행파일도 생기지 않더라구요....
고수님들 왜 그런 거죠?
|