Pro*C (also known as Pro*C/C++) is an embedded SQL programming language used by Oracle Database database management systems. Pro*C uses either C or C++ as its host language. During compilation, the embedded SQL statements are interpreted by a precompiler and replaced by C or C++ function calls to their respective SQL library. The output from the Pro*C precompiler is standard C or C++ code that is then compiled by any one of several C or C++ compilers into an executable.
[edit]See also
[edit]External links
- Pro*C Hello World Example
- Introduction to Pro*C Embedded SQL
- Embedded SQL with Pro*C
- Oracle 11.2 Pro*C/C++ Programmer's Guide
Pro*C Hello World Example
/* Hello World in Pro*C, the Oracle's embedded SQL environment */ #include |
==========================================================================================
Pro*C ( 오라클 데이터베이스와 연동할 수 있는 C 프로그램 )
: Embedded SQL 프로그램이라고도 함.
: 내부 PL/SQL 을 통한 프로그램의 경우 오라클이라는 내부 울타리에서만 수행되는 특징이 큰 제약으로 작용한다. 이런 고민을 해결하기 위해서 대부분의 DBMS 벤더는 외부 C 프로그램과 결합할 수 있는 선행 컴파일러를 제공하고 있으며 오라클에서는 이를 Pro*C 라고 한다.
-> PL/SQL 과 같이 절차적 프로그래밍 이 가능한 프로그램 도구로서 PL/SQL 처럼 오라클 내부에서 수행되는 프로그램이 아니라 실행 가능한 외부 프로그램으로 작성이 되어 관련 작업을 수행 할 수 있게 해 주는 도구이다.
-> Pro*C 만으로는 실행 파일을 만들 수 없다. 따라서 Pro*C 는 C 프로그램을 컴파일할 수 있도록 x.C 파일을 생성해 준다(선행컴파일러). 이 x.C 는 통상적으로 컴파일 되고, 오라클 라이브러리와 결합되어 실행 파일이 만들어 진다.
< 프로그램 작성 방식 >
내장 SQL 방식
-> C 프로그램 내부에서 EXEC SQL 이라는 접두사 뒤에 SQL 문장을 직접 기술 하는 방식
-> 많이 사용 되는 방식임.
OCI 방식
-> OCI 라이브러리를 통해서 오라클 SQL 문장을 직접 호출하여 사용하는 방식.
두 방식의 차이점
내장SQL방식
- SQL 연산을 쉽고 명료하게 처리하기 위해 3GL 어플리케이션 개발
- 간결한 코드작성
- 컴파일 전에 소스 코드 선행 컴파일
- 선행 컴파일러를 별도로 구매
- ANSI 표준 준수
- 다중 행 질의만을 위해 명시적 커서 선언
- 선행 컴파일 시에 SQL 구문 확인
OCI 방식
- 데이터베이스를 최대한 제어하면서 3GL 어플리케이션 개발
- 길고 복잡한 코드 작성
- 선행 컴파일 단계 없이 코드 컴파일
- 오라클 데이터베이스와 함께 OCI 라이브러리 획득
- 독점 비 표준 절차적 호출 인터페이스 사용
- 모든 데이터베이스 연산을 처리하기 위한 명시적 커서 선언
- 실행 시간에 SQL 구문 확인
출처 - http://blog.naver.com/sskkkll?Redirect=Log&logNo=120132622618
'DB > Oracle' 카테고리의 다른 글
Pro*C 개요 (0) | 2012.02.24 |
---|---|
Pro*C 파헤치기 (0) | 2012.02.24 |
sqlplus 사용 (0) | 2012.02.20 |
Oracle 관리 및 SQLPlus 정리 (0) | 2012.02.20 |
PL/SQL (0) | 2012.02.20 |