오라클의 예비 컴파일러(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++ 주석
'D B' 카테고리의 다른 글
오라클 언어 설정 변경 (0) | 2011.06.07 |
---|---|
mysql db 접속 권한 주기.. (0) | 2011.04.18 |
pro*c 를 위한 Makefile (0) | 2011.03.02 |
error while loading shared libraries: libclntsh.so.10.1: cannot enable executable stack as shared object requires: Permission denied (0) | 2011.02.25 |
mysql 5.5.9 언어 설정 latin1 -> euckr 변경 (0) | 2011.02.14 |
오라클 기본 명령어 [생성,삭제,권한] (0) | 2009.05.01 |
유저 권한 및 설명 (0) | 2009.05.01 |
데이터스페이스 (0) | 2009.05.01 |