Oracle Pro*C

정미·2023년 1월 27일
0

Pro*C

외부 C 프로그램과 결합할 수 있는 선행 컴파일러
Oracle RDBMS에서 제공하는 툴

목적

  • C언어를 사용하여 데이터베이스를 쉽게 관리할 목적
    - SQL문을 포함한 C프로그램Oracle DB 내 데이터 접근 및 조작이 가능한 C 프로그램으로 변환하기 위함
  • PL/SQL 프로그램의 경우 오라클 외부 프로그램과의 연동에 많은 제약이 있다.

특징

  • PreCompiler (선행 컴파일러)
    - Pro*C만으로는 실행 파일을 만들 수 없다.
    - 입력 파일 내의 EXEC SQL문을 Oracle 콜로 변환해서 실행 파일이 아닌 C컴파일러가 인식할 수 있는 출력 파일(.c)을 생성한다.
    - 해당 출력 파일은 C 프로그램의 통상적인 방식으로 컴파일, 오라클 라이브러리와 링크되어 실행 모듈이 만들어진다.
  • PL/SQL과 같이 절차적 프로그래밍이 가능하다.
    - PL/SQL: 오라클 내부에서 수행
    - Pro*C: 실행 가능한 외부 프로그램으로 작성됨

구성

어플리케이션 프롤로그

  • 변수 정의
  • Pro*C 프로그램을 위한 일반적인 준비 수행

선언절

  • 2.0 버전 이후 없어도 상관 없음.
  • C 프로그램 내에서 사용되는 모든 호스트 변수와 표지 번수를 선언한다.
EXEC SQL BEGIN DECLARE SECTION;
...
EXEC SQL END DECLARE SECTION;

호스트 변수

  • SQL과 프로그램 모두에서 참조되는 모든 값에 대해서 선언해야 한다.
  • 호스트 변수의 데이터 타입은 테이블 컬럼의 데이터 타입과 일치할 필요는 없다.
  • 선언절에서 명시적으로 선언 후 데이터 타입을 지정해야 한다.
  • 대소문자를 구분한다.
  • SQL 문에서는 변수 앞에 콜론 :을 붙인다.
  • C 문에서는 콜론을 붙이지 않는다.
  • SQL의 예약어를 사용하지 않는다.
  • 상수를 사용할 수 있는 곳에서난 사용한다.
  • 표지 변수가 붙어 있어도 상관 없다.
EXEC SQL BEGIN DECLARE SECTION;
int p_emp_no;
char p_name[11];
int p_dept_no;
EXEC SQL END DECLARE SECTION;

EXEC SQL
SELECT dept_no, e_name
INTO :p_dept_no, :p_name
FROM employee
WHERE emplyee_no = :p_emp_no;

어플리케이션 본체

  • 데이터를 조작하기 위한 SQL 문 포함 = 데이터 조작문
  • Pro*C가 처리 시에 필요한 코드 전후에 어떠한 C 코드를 지정해도 상관 없다.
  • 데이터 정의문은 테이블, 뷰, 인덱스 등 데이터 구조를 작성하거나 정의하기 위해 사용된다.
  • 예시
    - DECLARE STATEMENT
    - DECLARE DATABASE
    - EXEC ORACLE

출처

0개의 댓글