Pro*C 기본개념 _ 1

    Pro*C / / 2020. 1. 3. 14:36
    반응형

    1.  Pro*C 툴의 정의

    Pro*C : 선행 컴파일러

    - ORACLE RDMBS 에 준비되어있음

    - 외부 C프로그램에서 DB 데이터 조작 + ORACLE 데이터베이스에 접근 

    즉 C언어 + SQL 문+'EXEC'구문 => Pro*C

    - C와의 차이 : 확장자가 .pc 로 끝난다

    - Pro*C 만으로는 실행파일을 만들어 낼수 없으며, 컴파일되어 C프로그램 파일(.c)를 생성 

     

    2.  작업 순서

    - Pro*C 프로그램 작성

    - Pro*C를 이용해서 프로그램을 프리컴파일 한다. 

    - 프로그램 컴파일 후 오브젝트 파일 작성

    - 오브젝트 파일 링크 후 실행 가능한 파일 작성

    - 프로그램 실행

    ex)  filename.pc -> filename.c -> filename.o -> filename*

     

    3. 위치

    -. $ORACLE_HOME > proc/ >  proc.mk 파일

     

    -. 실제 컴파일
            -. makefile 위치
            $ORACLE_HOME에 proc/에 보면 proc.mk파일이 있다.
           
            이중에서
            1) USERID = uinfo/mation
             -. 오라클 DB에 접속할때 사용할 사용자 아이디와 비밀번호 지정
            
            2) DEST = /home/elfsun/simple/bin
            -. 컴파일후 실행파일을 복사할 디렉토리
           
            3) COMM_OBJ = /home/elfsun/simple/lib/lib1.o\
                          /home/elfsun/simple/lib/lib2.o\
                          /home/elfsun/simple/lib/lib3.o\
                          /home/elfsun/simple/lib/lib4.o
            -. 컴파일시 참조로할 오브젝트 파일들.
            \(백슬레시)로 구분함.
           
            4) all : $(PROGRAM)
            -. 프로그램의 이름을 지정할 수 있다. 이것은 프로그램의 소스 이름이 되며, 컴파일후 생성될 실행 파일의 이름이 되기도 한다.
           
            5) install :
            -. 컴파일후 생성된 실행 파일을 복사해주는 작업을 수행
           
            6) clean :
            -. 컴파일 과정에서 생성되는 C파일과 오브젝트 파일들을 삭제할때 수행
           
            이들중 수행할 각 명령들은 '@'바로 뒤에 작성해 줄 수 있다.


    -. SQLCA관련 변수
            -. sqlca.sqlerr[0] : fetch를 사용하여 쿼리된 레코드의 건수를 리컨시켜 주는 역할을 하는 변수이다.
            -. sqlca.sqlwarn : 경고에 대한 정보들을 지니고 있는 변수이다.
            -. sqlca.sqlerrm.sqlerrmc : sql 명령수행중 에러가 발생했을때, 발생한 에러에 대한 내용과 오류 코드번호에 관한 정보를 출력시켜 준다.
               ---------------------------------------
            -. sqlca.sqlcode값        내 용
               ---------------------------------------
               0                sql문이 정상적으로 수행
              
               1403                유일하게 양수값을 갖는 에러코드임.
                               조건에 맞는 데이타가 하나도 없을때.
              
               -1405        조회된 값중 null값이 있을때
               ---------------------------------------


    -. host변수 선언
           
            -. 호스트변수는 데이타베이스에서 데이타 처리 결과를 저장하기 위해 사용되며, 응용 프로그램내에서는
            변수로서의 역할을 한다. 따라서 호스트 변수를 선언할 때에는 데이타베이스 내에서 사용되는 칼럼의
            데이타 타입과 그 크기를 고려하여 선언되어야 하며, 프리컴파일 과정을 통해 응용프로그램내에서도
            사용가능한 형태이어야 한다.

            ex)
            EXEC SQL BEGIN DECLARE SECTION;
                    varchar username[16], userarea[10];
                    int usrno, usrage;
            EXEC SQL END DECLARE SECTION;          
           
            [주의]        
            1) 호스트 변수 선언시에 오라클 예약어를 사용하지 말것.
            2) 호스트 변수에서는 null처리를 해주지 않기 때문에 응용 프로그램에서 반드시 null처리를 해주어야 한다.
               단, 호스트 변수가 숫자형인 경우에는 예외이다.


    -. DB접속

            방법1>
            EXEC SQL CONNECT elfsun
                    INDENTIFIED BY 1234;
                   
            방법2>
            EXEC SQL BEGIN DECLARE SECTION;
                    varchar userid[8], passwd[8];
            EXEC SQL END DECALRE SECTION;          
           
            strncpy(userid.arr,"elfsun",6);
            strncpy(passwd.arr,"1234",4);
           
            EXEC SQL CONNECT :userid;
                    IDENTIFIED BY :passwd;
           
            -. 일반적으로 방법2를 더 선호함.
            -. 방법2를 쓸때에 변수명 앞에는 반드시 :를 붙여서 사용하고 있는 변수가 호스트 변수임을 명시해야 한다.


     

     

     

    반응형
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기