pro*c 처음 사용하는데요, 어제 첨으로 컴파일하는거 대충 배우고, make하는것도 배우고...(배웠다기보다는 그냥 배꼈죠, 의미도 잘 모르고...) 하여튼 소스만들고 make했는데 실행파일까지는 잘 생겼습니다. 그런데 실행파일을 실행하니까 Error가 나네요-.- "세그멘테이션 결함(Segmentation Fault)(coredump)"이렇게...
소스는 아래와 같습니다. #include <stdio.h>
EXEC SQL BEGIN DECLARE SECTION; int id; VARCHAR pay_yyyymm[10]; VARCHAR ykiho[10]; VARCHAR dbuserid[20]; VARCHAR dbpassword[20]; EXEC SQL END DECLARE SECTION;
EXEC SQL INCLUDE sqlca;
void sql_error();
main() { strcpy(dbuserid.arr,"GEIN10"); dbuserid.len = strlen(dbuserid.arr); strcpy(dbpassword.arr,"GEIN10"); dbpassword.len = strlen(dbpassword.arr);
EXEC SQL WHENEVER SQLERROR DO sql_error();
EXEC SQL CONNECT :dbuserid IDENTIFIED BY :dbpassword;
printf("\nConnected to ORACLE as user: %s\n",dbuserid.arr);
while(1){ printf("\nEnter ID number (0 to quit): "); scanf("%d",&id); if(id == 0) break;
EXEC SQL WHENEVER NOT FOUND GOTO notfound;
EXEC SQL SELECT pay_yyyymm,ykiho INTO :pay_yyyymm, :ykiho FROM tbgyaa01 WHERE rownum=1; printf("\n\n%s\t%s\n",pay_yyyymm.arr,ykiho.arr);
continue; notfound: printf("\nNot a valid ID number try again.\n"); }
printf("\nexit...\n\n");
EXEC SQL COMMIT WORK RELEASE; exit(0); }
void sql_error() { EXEC SQL WHENEVER SQLERROR CONTINUE;
printf("\nORACLE error detected:\n"); printf("\n%.70s\n",sqlca.sqlerrm.sqlerrmc);
EXEC SQL ROLLBACK WORK RELEASE; exit(1); }
makefile은 PROC = proc CC = cc CFLAGS = -O2
INCLUDE = -I$(ORACLE_HOME)/precomp/public LIBS = -L$(ORACLE_HOME)/lib -lclntsh
TARGET = start1
$(TARGET): $(TARGET).pc $(PROC) $(TARGET).pc $(CC) $(CFLAGS) -o start1 $(TARGET).c $(INCLUDE) $(LIBS)
clean: rm -f $(TARGET).o $(TARGET).c $(TARGET)
이렇게 만들었고요... 빠른 답변 주심 감사하겠네요... 첨이라 아무것도 모르겠습니다. |