1.개요
데이터베이스 어플리케이션을 개발할 때는, 다양한 오라클 툴들을 선택한다.
만약 3GL 프로그램에서 오라클 데이터베이스로의 액세스를 필요로 한다면,
-내장SQL(Embedded SQL) 을 사용하거나
-OCI(Oracle Call Interface) 를 사용할 수 있다.
SQL 문장 내장
-SQL 문장을 호스트 프로그램에서 내장시키고 난 후 선생컴파일러를 실행
OCI 호출
-프로그램에서 직접적으로 OCI 라이브러리 함수 호출
선행 컴파일
-호스트 프로그램의 정상적인 컴파일을 하기 전에, 내장 SQL문을 실행시간
라이브러리에 대한 호출로 미리 번역하는 과정
내장 SQL(Embedded SQL) 어플리케이션 개발
1단계: 일반 편집기(EDITOR)로 호스트 프로그램 작성
--> 호스트 프로그램(.PC)
2단계: ORACLE PreCompiler를 이용하여 소스프로그램 생성
-->소스 프로그램(.c)
결과적으로는 SQL 문장을 대체하는 라이브러리 호출을 포함
오류는 PCC-로 시작
3.Compiler-->오브젝트 프로그램
4.Linker로 실행가능한 프로그램 생성
-->링커는 실행 가능한 프로그램을 생성하기 위해 sql문장을 처리하는
오라클 라이브러리 루틴을 SQLLIB과 오브젝트 코드를 링크
2.3GL 작업 예제
1)문자 스트링 구문 분석
2)LONG 열 질의
3)배열이나 연결 리스트와 같은 복잡한 데이터 구조들 표현
4)수천건의 삽입과 갱신이 이루어지는 일괄 입력 시스템 생성
5)오라클 FORMS 화면과 구별되는 사용자 정의의 최종 사용자 인터페이스 생성
6)오라클 REPORTS 와 다른 복잡한 보고서 생성
7)과학적인 실험시간 실시간 데이터를 직접적으로 데이터베이스로 읽어 주는 온라인 시스템 구축
8)통계 분석 프로그램 같은 대용량 정보를 빨리 그리고 임의로 액세스 하는 것이 요구되는 프로그램 구축
9) 그래픽 또는 CAD 프로그램처럼 오라클 데이터베이스 와 비 오라클 인터페이스 사이의 데이터 전송
3.3GL 프로그램 방법 선택
1>SQL 문장 내장
--> SQL 문장을 프로그램에 내장시키고 난 후 선행 컴파일러를 실행시킵니다.
2>OCI 호출
--> 프로그램에서 직접적으로 OCI 라이브러리 함수에 대한 절차적인 호출을 생성합니다.
3.1SQL 문장 내장
오라클 3GL 선행 컴파일러의 처리과정
1>호스트 프로그램을 받아 들입니다.
2>내장 SQL을 호스트 언어 문장과 오라클 실행시간 라이브러리(SQLLIB-STANDARD ORACLE RUNTIME LIBRARY) 대한 호출로 번역합니다.
3>소스코드를 생성합니다.
생성된 소스 코드를 어플리케이션 개발자는 관례대로 컴파일, 링크과정을 거쳐 어플리케이션을 실행합니다.
프로그램이 실행 될 때 선행 컴파일러에 의해 지정된 SQLLIB 프로시저를 호출합니다.
오라클에 접속하고, 오라클 데이터를 정의, 조작 및 질의하고, 트랜잭션을 처리하고 오라클 데이터에 대한 액세스를 제어하기 위해 SQLLIB 프로시저를 사용할 수 있습니다.
오라클이 내장 SQL 문장을 실행할 때는, 성공할 수도 있고 오류가 발생할 수도 있습니다.
이 관련 정보는 호스트 프로그램에 포함된 오라클 데이터 구조에 저장됩니다.
오라클은 프로그램에 오류와 경고를 처리하기 위해 액세스 할 수 있는 상태정보를 반환합니다.
3.2 OCI 호출
OCI(Oracle Call Interface)를 사용하여, 호스트언어 소스코드를 직접적으로 OCI 라이브러리
함수에 절차적인 호출을 할 수 있습니다.
비데이터베이스 어플리케이션을 컴파일하고 링크하는 것과 동일한 방법으로 프로그램을 컴파일
하고 링크합니다. 여기서는 별도의 선행 컴파일 단계가 필요없습니다.
3.3 두 방법의 비교
선행 컴파일러
1.SQL 연산을 쉽게 하고 명료하게 하기 위해 3GL 어플리케이션 개발
2.컴파일 전에 소스 코드 선행 컴파일
3.간결한 코드 작성
4.별도로 선행 컴파일러 구매
5.ANSI 표준 준수 (X3.168-1992)
6.다중 행 질의만을 위해 명시적 커서 선언
7.선행 컴파일 시에 SQL 구문 확인
OCI 방법의 기능
1.데이터베이스에 대해 가능한 최대의 제어를 하면서 3GL 어플리케이션 개발
2.길고 복잡한 코드 작성
3.선행 컴파일 단계 없이 코드 컴파일
4.오라클 데이터베이스와 함께 OCI 라이브러리 획득
5.독점 비표준 절차적 호출 인터페이스 사용
6.모든 데이터베이스 연산을 처리하기 위한 명시적 커서 선언
7.행시간에 SQL 구문 확인
4.Embedded SQL 어플리케이션 개발
1단계: editor로 호스트 프로그램을 작성합니다.
-->호스트 프로그램
2단계:ORACLE preCompiler 를 이용하여 소스프로그램을 생성합니다.
-->소스프로그램(결과적으로 sql 문장을 대체하는 라이브러리 호출을 포함 오류는 pcc- 로 시작합니다.)
3단계:Compiler-->오브젝트 프로그램
4단계 Linker로 실행 가능한 프로그램을 생성합니다.
(링커는 라이브러리 호출을 해결하기 위하여 오라클 sql 실행시간 라이브러리를 호출합니다.
실행 가능한 프로그램을 생성하기 위해 sql문장을 처리하는 오라클 라이브러리 루틴인 SQLLIB 과 오브젝트 코드를
링크합니다)
5.선행 컴파일러 호출
호스트 프로그램 입력 파일의 이름과 각 언어에 따른 올바른 파일명 확장자를 명시하는 INAME 옵션을
사용하여 운영체제 프롬프트에서 오라클 선행 컴파일러를 호출합니다.
공백으로 명령라인에서 인수들을 구분합니다.
예)PROC INAME=파일명.PC
5.1선행 컴파일러 옵션
1>입력과 출력 파일명을 지정합니다.
2>오류보고, 커서 관리를 제어합니다.
3>선행 컴파일시에 검사 수준을 지정합니다.
예)OPTION= VALUE
5.2옵션에 대한 기본 값
많은 옵션들은 선행 컴파일러 안에 내장된 기본 값을 가지고 있습니다.
각 시스템에는 또한 단일 시스템 구성파일이 있습니다. 이것의 이름은 선행 컴파일러 마다 고유합니다.
옵션 설정
명령 라인에서(--> 모든 옵션 가능)
호스트 프로그램 코드 내의 인라인으로(-->약간의 옵션 가능)
사용자 구성파일에서(-->이것은 라인마다 옵션을 가진 텍스트 파일)
우선순위(높은 순에서 낮은 순)
1>인라인
2>명령 라인
3>사용자 구성 파일
4>시스템 구성 파일
5>선행 컴파일러 디폴트
5.3 옵션 지정
명령라인에서 지정된 인라인 옵션에 의해 무효화될 때까지 호스트 프로그램의 첫번째 라인에서 부터 효과가 있습니다.
인라인 설정의 범위는 위치적이지, 논리적이지 않으며, 다음의 순차적인 설정이나, 선행 컴파일
된 단위의 마지막까지 효과가 있습니다.
EXEC SQL OPTION 은 운영체제의 명령 라인 길이를 단축시키거나, 동일 어플리케이션에서 몇 번의
동일한 선행 컴파일러 옵션의 설정을 변경하는데 유용합니다.
옵션을 지정하기 위해 명령라인 옵션보다는 구성파일을 사용하십시요
디폴트로 시스템 구성파일이 사용됩니다. 또는 명령라인에서 임의의 개수의 사용자 구성파일을 지정합니다. 이 파일의 이름은 시스템과 언어에 종속적인 것입니다.라인마다 하나의 옵션을 지정합니다.
CONFIG 옵션을 사용하여 명령라인에서 구성 파일명을 지정합니다. 구성파일의 중첩은 허용되지 않습니다.
예) PROC INAME=INIFILE.PC ONAME=OUTFILE
-->인라인에서
EXEC SQL OPTION (SELECT_ERROR=NO)
5.4 옵션
인수 인라인 기본값 설명
ONAME NO 시스템에 종속적 출력 파일명
SQLCHECK NO 구문 내장 SQL문장에 대해 선행 컴파일러가 수행
하는 검사 및 의미 검사의 수준(CHECKING LEVEL)
기능 값: SEMANTICS, SYNTAX, NONE
USERID NO 선행 컴파일러에 제공된 사용자명과 암호
MODE NO ORACLE 내장 SQL에 대한 ANSI 표준 준수 수준
ANSI, ANSI13, ANSI14
INCLUDE YES 포함되는 파일을 위한 디렉토리 경로
DEFINE YES 선행 컴파일러 기호값
SELECT_ERROR YES YES SELECT 문장에서 너무 많은 행 조건을 처리 하기 위한 스위치
ORACA YES NO ORACA 데이터 구조를 포함하기 위한 스위치
CODE YES KR_C C함수 PROTOTYPE 인 ANSI_C 또는 KR_C 제어를 위한 스위치
MAXOPENCURSOR YES 10 커서 캐시 초기 크기
HOLD_CURSOR YES NO 커서와 커서 캐시 사이의 링크를 제어하기 위한 스위치
RELEASE_CURSOR YES NO 커서 캐시와 문맥 영역 사이의 링크를 제어하기 위한 스위치
AUTO_CONNECT NO NO YES로 설정하면, 처음 SQL 문장을 만날 때 데이터베이스에 자동으로 로그온
UNSAFE_NULL NO NO 지시자 변수 없이 NULL 이 인출될 때 오류 메시지 생성을 방지하기 위한 스위치
CHAR_MAP YES CHARZ C 호스트 문자 변수의 디폴트 맵핑 지정
THREADS NO NO 다중 쓰레드 지원 요구
OBJECT NO NO 오라클 8에서 객체형 지원 요구
5.5 UNIX에서 내장 SQL 프로그램 구축
어떤 운영체제에서는 호스트 프로그램 코드를 한번에 선행 컴파일, 컴파일 링크하기 위해 스크립트를 이용할 수 있습니다.
옵션을 지정하기 위해 인라인 옵션 또는 구성파일을 사용합니다.
인라인 옵션들이나 시스템 구성파일을 사용하는 경우를 제외하고는 미리
준비된 운영체제 스크립트를 이용할 때 선행 컴파일러 옵션들을 명시하는 것이
불가능할 수도 있습니다.
실행 가능하게 만들기 위해 C 스크립트 를 사용합니다.
MAKE -F DEMO_PROC.MK BUILD EXE=FILENAME OBJS= FILENAME.O