PART 1. Pro*C 개요
1장. Pro*C 소개와 기본 특징
2장. Pro*C 오류 진단과 처리
2-1 SQLCA
2-2 ORACA
2-3 오류 검출 및 처리
1. 명시적 오류 처리
- SQL 문장시마다 오류 처리 구문을 지정하여 오류를 처리
- SQLCA 구조체의 멤버인 sqlcode 를 총하여 확인 가능
- 단점 : 발생가능한 오류 처리가 누락되어, 운영중에 에러로 연결될수 있다.
2. 묵시적 오류 처리
- EXEC SQL WHENEVER 구문 사용
- 전역적 ( 프로그램 시작 전 )
- 지역적 ( 각 함수 별 )
- 모든 오류 상황에 특정한 라벨을 지정해서 처리합니다.
- 간단하게 사용가능하나, 특정 오류에 대한 개별 오류 처리가 불가능합니다.
PART 2. Pro*C 프로그램 구성과 컴파일 환경
3장. Pro*C 프로그램 구성
3-1 어플리케이션 프롤로그
1. 선언 절
- 호스트변수 : SQL 문과 프로그램문 모두에서 참조되어 사용
- :표지 변수 :호스트 변수, 1:1로 대응하는 변수로서, 호스트변수의 값이 NULL 인지를 확인
1) short 형으로 선언 후 -1 값을 저장하면, null 값으로 지정됩니다.
2) sql 문장에서 호스트변수 : 지시자 변수 (호스트 변언어 문장에서는 표지 변수로만 사용이 가능, 데이터 값을 획득할수 없음)
3) NVL 함수보다 성능이 개선되고 사용범위가 훨씬 더 넓습니다.
2. INCLUDE 절
- 프로그램 안에서 사용될 함수, 선언문, 각종 ALIAS가 정리되어 있는 요약 파일로서, 시스템과 사용자가 이를 사용
PRO*C 프로그램의 필수요소인 SQLCA 를 사용하기 위해 참조해서 사용합니다.
3. CONNECT 문
- 지역 DB 접속
ex) EXEC SQL CONNECT : uid IDENTIFEID BY :pwd;
프로그램 개발 및 운영장비에 DBMS 가 설치되어 있거나, TNS 를 자동으로 읽어서 DBMS로 접속하는 방식
보통 회사에서는 데이터베이스 서버와 AP 서버가 분리되어 있습니다.
지역 데이터 베이스 접속 방식을 유지하면서 원격지에 접속하고자 하는 경우에는 다음과 같은 절차를 따릅니다.
① client의 tnsname.ora 파일에 아래의 TNS 명 추가
SV =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.70.184)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
② TNSPING을 통해 정보 확인
cmd > tnsping sv
③ 접속
cmd > sqlplus scott/1234@sv
ex ) 계정이 LOCK 걸려 있을 때 :
본서버에서 SCOTT 계정의 락을 풀어준다.
ALTER USER scott ACCOUNT UNLOCK
④ sv 를 기본 서버 접속 서버로 설정
linux : .profile 에 아래의 코드를 추가합니다.
export TWO_TASK = real
windowx :
cmd > set local = sv
- 외부 DB 접속
ex) EXEC SQL CONNECT : uid IDENTIFEID BY :pwd USING :tns;
- 여러 DB 접속 ( TNS 이용 )
tnsnames.ora 파일에 여러개의 데이터베이스 서보의 정보 기술한 후 데이터 베이스 링크를 생성하여 작업 처리
4. 트랜잭션 제어
- 오라클 데이터베이스는 DML 문장 사용후, 데이터 변경을 제어하기 위해 사용자에 의해
COMMIT 또는 ROLLBACK 문장을 수행해야 합니다. ( 명시하지 않을경우 비정상 종료로 인식 )
1) EXEC SQL COMMIT [WORK] [RELEASE] ; // 영구적인 갱신 , RELEASE : 접속 해제
2) EXEC SQL ROLLBACK [WORK] [RELEASE] ; //갱신작업을 복구
- 보통은 전체 문장에 대한 ROLLBACK 만 지원하므로, 특정부분까지 ROLLBACK 하기위하여 각 DML문장에 대한 SAVE POINT 지정,
이때 ROLLBACK 시, 지정된 POINT 까지 ROLLBACK 가능
3) EXEC SQL SAVEPOINT [WORK] {point} ;
4) EXEC SQL ROLLBACK TO SAVEPOINT {point} ;
3-2 어플리케이션 본체
- 자료 추출, 갱신하는 실제 프로그래밍을 기술하는 부분입니다.
EXEC SQL + SQL 문장 사용
4장. 컴파일 환경 구축
4-1 Pre 컴파일 ( 외부,내부 지정방식)
외부 : Makefile 작성
내부 : 프로그램 내부에 직접 기술
test.pc -> test.c
4-2 C 컴파일
1. cc -c 컴파일
test.c -> test.o
2. cc- o 컴파일
test.o -> test 실행 파일
./test
3. 쉘을 활용한 컴파일 ( 한번 해보기 )
make 파일이 아닌 make를 수행할 수 있는 쉘을 만들어 사용합니다.
why? 눈에 잘 안들어옴, 단계별로 기술하는 방식이 아니라 ALIAS 로 지정하고 통합하는 형태, 변경하기 어려움.
stddef.h 파일에 INCLUDE 로 다 넣어줬지만, 쉘에다가 다 넣어줄수 있음.
다른사람의 컴퓨터에 접속할때 환경변수 수정못하니까, 이럴때 좋을듯..?
(1) mk 파일에 컴파일 과정의 단계별 처리과정을 저장 합니다.
make -nf demo_proc sample1 > mk
(2) 컴파일과 상관없는 라인 삭제
(3) 1% 부족 - sample1 부분 수정
'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 |
Pro*C 환경설정 및 컴파일 ( Linux ) (1) | 2020.01.03 |
Pro*C 기본개념 _ 1 (0) | 2020.01.03 |