Pro*C 컴파일
일단 "sample.pc"로 어플리케이션 프로그램의 코딩이 끝났으면 Pro*C 프리컴파일을 해야 한다.
proc에서 사용되는 프리컴파일러 옵션들의 Default 값들은 프리컴파일러 내에 포함되어 있고,
Pro*C System Configuration file에 있고, 또 user configuration file을 작성하여 지정할 수도 있다.
예를 들어 MAXOPENCURSORS라는 옵션은 프리컴파일러 내에 10으로 되어있는데,
system 환경화일에 MAXOPENCURSORS=32라고 하면 Default값은 32가 되는 것이다 .
또 user가 정의한 환경화일을 지정해 주면 Default 값은 그 값으로 변경된다 .
system configuration file 시스템 마다 다르지만 $ORACLE_HOME/proc/pmscfg.h
오라클7.3.X 버젼에서는 $ORACLE_HOME/ precomp/admin 디렉토리에 위치한다.
config 화일의 지정
Default 옵션을 보려면
하면 된다 .
config 화일의 생성
config 화일은 각 라인마다 하나의 옵션과 값을 주면 된다 .
실행화일의 작성
make 유틸리티
"makefile" 이라는 특수한 형식에 저장되어 있는 일련의 의존규칙들에 근거하여 화일을최신 버전으로 개정하는 유틸리티이다 .
-f 옵션은 만들고자 하는 화일 이름을 명시할 수 있게 한다 .만일 이름이 명시되지 않으면 , "makefile" 로 간주한다.
Pro*C 의 makefile 은 $ORACLE_HOEM/precom/demo/proc 에 존재하는 proc.mk 를 자신의 작업 디렉토리에 copy 하여 변경하여 작성하면 된다.
proc.mk 화일은 Pro*C 프로그램을 컴파일하여 실행화일을 생성하는 일련의 작업들을기술해 놓은 것이다.
위의 명령은 proc.mk 라는 makefile 을 이용하여 makefile 안에 있는 sample1 이란 lable 의 구성대로 실행한다.
sample1 이라는 lable 에는 proc 를 구동시키고 , cc 를 구동시키는 부분을 정의한다 .
Precompiler Options
문법 | default | 설명 |
AUTO_CONNECT | NO | 자동 OPS$ 로그인 |
CODE=ANSI_C|KR_C|CPP | KR_C | 생성 C 코드 타입 |
CONFIG=<filename> | NO | 사용자정의 cinfig 화일 |
CPP_SUFFIX | NO | output 화일의 확장자 정의 |
DBMS-V6|V7|NATIVE|V6_CHAR | NATIVE | 데이타베이스 버젼간의 호환성 정의 |
DEFINE=<name> | NO | Pro*C 프리프로세서에서 사용될 이름 정의 |
DEF_SQLCODE | NO | #define SQLCODE 를 생성 |
ERROR=YES|NO | YES |
에러메세지 출력할 위치지정 YES: stdout, NO: list 화일 |
FIPS=NONE|SQL89|SQL2 | NONE | whether to flag ANSI/ISO non-compliance |
HOLD_CURSOR=YES|NO | NO | 커서 cache 를 sql 문으로 핸들링한다 |
INAME=<filename> | NO | 입력화일 이름 |
INCLUDE=<pathname> | NO | EXEC SQL INCLUDE 나 #include 문장을 위한 디렉토리 path 지정 |
LINES=YES|NO | NO | whether #line directives are generated |
LNAME=<filename> | none | 리스트화일명 |
=10..1024 | 1024 | string literals 의 최대길이 |
MAXOPENCURSOR=5..255 | 10 | 최대커서 갯수 |
ONAME=<filename> | none | output 화일명 |
ORACA=YES|NO | NO | ORACA 의 사용여부 |
RELEASE_CURSOR | NO | 커서캐쉬에서 커서를 제어 |
SELECT_ERROR | YES | SELECT 에러를 FLAG |
SQLCHECK | SYNTAX | 컴파일시 SQL CHECK |
SYS_INCLUDE | none | 시스템 헤더화일의 디렉토리 설정 |
USERID | NO | USERNAME/PASSWORD 지정 |
프리컴파일 옵션의 영향 범위
위의 옵션들은 하나의 C 소스 프로그램에서만 유효하다.
만약 A 라는 UNIT 에 프리컴파일러 옵션인 HOLD_SURDOR=YES 그리고 RELEASE_CURSOR=YES 가 정의되어 있고,
B UNIT 에는 없다면 A 는 옵션의 영향을 받고 B 는 DEFAulT 값의 영향을 받는다.
프리컴파일 옵션의 사용 프리컴파일 옵션은 명령행에서도 사용가능하고 또 SOURCE 에 포함할 수도 있다 .
명령행에서의 사용은
로 사용하고 각각의 옵션사이는 공백으로 구분한다 . 예를 들어
또 인라인으로 SOURCE 내에 삽입하여 사용가능한데 , 이때는 "EXEC ORACLE" 이라는 문구를사용하여 삽입한다 .
예를 들어
SOURCE 파일에 포함되어진 옵션들도 명령행이나 CONFIGURATION 화일에 중복하여 사용할수 있다 .
이 "EXEC ORACLE" 구문은 특히 프리컴파일 도중에 옵션을 변경할 때 유용하다 .
EXEC ORACLE 의 유효범위는 SOURCE 화일내에 같은 옵션으로 EXEC ORACLE 이 사용된 이전까지유효하다 .
AUTO_CONNECT
자동으로 OPS$ 계정으로 connect 한다 .
YES 이면 어플리케이션 프로그램이 첫 SQL 문장을 실행할 시점에서 OPT$ 계정으로 CONNECT를 시도한다 .
NO 이면 자동 CONNECT 는 되지 않고 SOURCE 화일내에 CONNECT 문장이 존재해야 한다 .
CODE
C 함수의 어떤 프로토타입을 생성시키는 지 정한다.
ANSI_C 는 X3.159-1989 에서 제공한 표준을 제공한다.
ANSI_C 표준으로 생성한다.
extern void(sqlora(long *, void *);
CODE=KR_C 이면
extern void sqlora(/*_ long *, void * */);
CODE=CPP 이면 C++ 에 맞는 SOURCE CODE 를 생성시킨다.
CONFIG
사용자 지정 CONFIGURATION 화일을 지정한다 . 각 라인마다 한개의 옵션이 들어가게 화일을 생성해 이름을 지정한다 .
CPP_SUFFIX
C++ 옵션으로 SOURCE 화일의 확장자를 지정한다 .
DBMS
문법을 정의한다 . NATIVE : 접속되는 데이타 베이스에 SETTING 된 테이블에 따른다 .
DEF_SQLCODE
#define SQLCODE sqlca.sqlcode
DEFINE
프리프로세서의 매크로를 컴파일 시점에서 선언한다 . SOURCE 화일에 아래와 같이 정의 되어 있다면
로 프리컴파일하면 #define XYZZY 를 SOURCE 에 포함시킨것과 같다 .
도 같은 효과를 나타낸다 .
ERRORS
에러를 터미널로 보낼 것인지 (NO), 리스트 화일로 보낼 건지를 (YES) 결정
HOLD_CURSOR
SQL 문이나 PL/SQL 블럭을 커서 캐쉬안에서 보관시킬 건지를 결정한다 .
INAME
SOURCE 화일명을 명시한다 .
INCLUDE
컴파일시 포함되어져야 할 화일의 디렉토리명을 명시한다 .
#include 나 EXEC SQL INCLUDE 문에서 명시된 화일들이 위치한 곳을 명시한다 . 컴파일시 헤더 화일을 찾는 순서는
IRECLEN
SOURCE 화일의 한 라인의 길이를 정한다 . default 로 80 으로 지정되어 있다 .
LNAME
리스트 화일의 이름을 명시한다 .
LRECLEN
리스트 화일의 한 라인의 길이를 나타낸다 .( 기본값 :132)
LTYPE
생성될 리스트 화일의 타입을 설정한다 .( 기본값:LONG)
MAXLITERAL
(8~1024) 사이의 값으로 문자 LITERAL 의 최대길이를 설정한다 . ( 기본값 1024)
MAXOPENCURSORS
동시에 OPEN 할 수 있는 최대 커서의 갯수를 설정한다 . (5~255) 기본값:10
ONAME
OUTPUT 화일명을 명시한다 .
기본적으로 INAME 의 뒤에 CPP_SUFFIX 를 붇여 출력한다 .
ORACA
ORACA 의 사용여부를 설정한다 .
ORACA=YES 면 SOURCE 프로그램내에 EXEC SQL INCLUDE ORACA.H 나 #include oraca.h 를 포함해야만 한다 .
ORECLEN
OUTPUT 화일의 한 라인의 길이를 설정 ( 기본값 80), (80~255)
PAGELEN
리스트화일의 PAGE 길이를 설정 ( 기본값 없음 )(30~255)
RELEASE CURSOR
커서의 보관을 취소한다 .
SQLCHECK
SQL 문의 검사를 설정한다 .
- SYS_INCLUDE
- :시스템 헤더 화일의 디렉토리를 설정한다 .
- USERID
- :오라클 USERID 와 PASSWORD 를 명시한다 .
'ProC' 카테고리의 다른 글
ORA-01405: fetched column values is NULL (0) | 2011.10.16 |
---|---|
Pro*C 어플리케이션의 작성 (0) | 2011.10.16 |
Dynamic SQL의 사용 (0) | 2011.10.16 |
SQLCA(SQL Communication Area) (0) | 2011.10.16 |
Pro*C에서 변수의 사용 (0) | 2011.10.16 |