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를 쓸때에 변수명 앞에는 반드시 :를 붙여서 사용하고 있는 변수가 호스트 변수임을 명시해야 한다.
'Pro*C' 카테고리의 다른 글
Oracle_Pro*C 실무프로젝트 활용서_3 (1) | 2020.02.03 |
---|---|
visual studio2019에서 .pc 파일 컴파일 하기 (0) | 2020.01.22 |
Oracle Pro*C 실무 프로젝트 활용서_2 (0) | 2020.01.10 |
Oracle Pro*C 실무프로젝트 활용서_1 (0) | 2020.01.07 |
Pro*C 환경설정 및 컴파일 ( Linux ) (1) | 2020.01.03 |