본문 바로가기
D B

Pro*c

by 상레알 2011. 2. 22.

오라클의 예비 컴파일러(precompiler)는 응용 프로그램 안에 직접 SQL문을 사용할 수 있게 해주는 도구이다.
예비 컴파일러는 소스 프로그램을 받아 들여 그 속에 삽입(embed)된 SQL 문장을 표준 Oracle runtime library
호출로 바꾸어 수정되 프로그램 소스 코드를 생성한다. 사용자는 이 소스 코드를 일반적인 방법으로 컴파일 하고
링크하고 수행한다. 오라클은 C와 C++을 위해 Pro*C/C++ 이라는 예비 컴파일러를 제공하며 일반적으로 삽입
SQL문이 포함된 소스 파일의 확장자는 ".pc" 이다. 이 pc 파일을 예비 컴파일러를 통하여 컴파일 하면 C 파일이
생성된다.

- Pro*C를 이용한 응용 프로그램의 개발 절차 -




오라클 설치 폴더/precomp/admin/  pcscfg.cfg 파일은 ProC를 사용하기 위한 시스템 설정 
오라클 설치했을때 편집해슴.

용어 설명

호스트 프로그램 : 삽입 SQL 문이 포함된 프로그램
호스트 언어 : 삽입 SQL을 포함한 C, C++, JAVA, COBOL 등을 지칭
호스트 변수 : 삽입 SQL문에서 조건에 사용되는 값을 전달하거나 검색한 값들을 프로그램에 전달하는 변수

삽입 SQL 문장의 사용

응용 프로그램 상에서, 완전한 SQL 문장과 완전한 C 문장을 혼합해서 사용할 수 있고, C의 변수와 구조체(struct)
를 SQL 문에서 사용할 수 있다.
호스트 프로그램에서 SQL 문장을 사용하려면, EXEC SQL이라는 키워드를 사용해서 시작하고 세미콜론으로 종료한다.
C의 변수들을 SQL 문에서 사용하려면 다른 SQL 필드 이름과 구별하기 위해 콜론(:)을 앞에 붙여 사용한다.

ex)  
EXEC SQL SELECT empno, ename,job
INTO :empno, : ename, :job
FROM emp
WHERE deptno = :deptno ;

예제의 SQL 문에서 SELECT 다음의 empno, ename, job은 테이블의 필드 이름을 나타내며, INTO 다음의 empno,
ename, job은 호스트 변수를 의미한다. 즉 위의 문장은 emp테이블에서 주어진 부서 번호(deptno)에 속하는 직원들의
번호(empno), 이름(ename), 직업(job)을 가져와서 호스트 변수 empno, ename,job에 저장하는 것이다.

변수 선언

 데이타 타입 설명 
 Char 한 문자
 Char[n]  N개의 문자 배열 (문자열)
 int  정수
 short  작은 정수
 long  큰 정수
 float  부동 소수점수(단정도형)
 double  부동 소수점수(배경도형)
 VARCHAR[n]  가변 길이 문자열

호스트 변수의 타입은 위 표와 같이 선언할 수 있다.


선언부(declare section)

호스트 변수를 C 언어의 규칙에 따라 선언부에서 선언해야 한다. 예비 컴파일 옵션중 MODE=ORACLE 이면,
특별한 선언부에 선언할 필요가 없다. CODE=CPP 옵션이면(C++을 사용한다면), 반드시 선언부가 있어야 한다.

ex)
EXEC SQL BEGIN DECLARE SECTION;
/*  모든 호스트 변수를 선언 */
char *uid = "scott/tiger";
...
EXEC SQL END DECLARE SECTION;

선언부에는 아래와 같은 것들을 포함할 수 있다.

- 호스트 변수
- 호스트 변수가 아닌 C/C++ 변수
- EXEC SQL INCLUDE 문
- EXEC SQL ORACLE 문
- C/C++ 주석