database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 984 게시물 읽기
No. 984
pro*c 메이크해서 실행파일은 만들었는데 실행하니 Error가...
작성자
이광복
작성일
2003-10-08 18:37
조회수
4,163

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)

이렇게 만들었고요...
빠른 답변 주심 감사하겠네요...
첨이라 아무것도 모르겠습니다.

이 글에 대한 댓글이 총 1건 있습니다.

데이타의 크기를 의심해 보세요..

'세그멘테이션 결함(Segmentation Fault)(coredump)'

제 경함상, 이 오류는 많은 원인이 있겠지만, 잘못된 포이터 때문에

많이 발생합니다.

(그리고 여기는 MS-SQL 관련 Q&A 입니다. proc*C 관련 질문은 오라클쪽에 올리시는 것이, 더 빠르고 정확한 대답을 얻을 수 있을 것 같네요)

 

가을남자님이 2003-10-09 10:57에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
987db 복구시 생긴 문제좀 봐주세요.
거북이
2003-10-10
2979
986table과 table의 연결을 어떻게 하나요? [1]
승아
2003-10-10
2766
985데이터 수정 후 삽입 [2]
왕초보
2003-10-09
4645
984pro*c 메이크해서 실행파일은 만들었는데 실행하니 Error가... [1]
이광복
2003-10-08
4163
983CHECK 제약조건에서 subquery를 사용할 수 없나요?? [1]
방선이
2003-10-08
3140
982저장프로시저를 디버깅하고 싶은데염.... [1]
박상호
2003-10-06
3478
981ORACLE DB를 MS-SQL DTS로 변환 [2]
ORACLE
2003-10-06
3955
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다