의견.png

프로씨

해시넷
gyongmo (토론 | 기여)님의 2019년 7월 25일 (목) 14:46 판
이동: 둘러보기, 검색

프로씨ORACLE RDBMS에 준비된 Pro*C툴은, SQL문을 포함한 C프로그램을, ORACLE 데이터베이스내에 있는 데이터에 접근과, 조작을 할 수 있는 데이터에 접근과, 조작을 할 수 있는 C 프로그램으로 변환하기 위한 것이다. Pro*C는 프리컴파일러이기 때문에, 입력 파일 내에 있는 EXEC SQL 문을 적당한 ORACLE 콜로 변환해서 출력 파일을 작성한다. 그 다음 이 출력 파일을 C 프로그램에 대한 통상의 방법으로 컴파일하고 링크해서 실행모듈을 작정한다.[1]

개요

프로씨는 SQL 문은 절차형 언어가 아니다. 그래서 오라클을 포함한 많은 데이터베이스PL/SQL이라는 절차형 언어를 제공한다. PL/SQL오라클 내부에서 실행되는 프로그램으로서 오라클 내부라는 한정된 공간에서 실행되는 도구이다.DBMS의 버전이 높아지면서 이전관 다르게 PL/SQL에도 다양한 기능이 추가 되었다. 예를 들면, TCP/IP, HTTP, FILE I/O 등과 같은 기능이 추가되어 다양한 방식의 프로그래밍이 가능해졌다. 하지만 오라클 외부 프로그램과의 연동 등에 있어서는 많은 제약이 있다. 예를 들어, TCP/IP 통신을 하는 PL/SQL 문장을 작성하여 수행하는 중에 메모리 할당 등 예기치 않은 오류로 프로그램이 종료되는 상황이 발생할 수 있다. 프로그램이 오류로 인해 종료되는 부분은 프로그램을 수정하여 해결이 가능하다. 하지만 이로 인해 오라클 엔진에 부하가 가해진다면 이는 돌이킬 수 없는 장애로 이어질 수 있다. 이렇듯 내부 PL/SQL을 통한 프로그램의 경우 오라클이라는 내부 울타리에서만 수행되는 특징이 큰 제약으로 작용한다. 이런 고민을 해결하기 위해서 대부분의 DBMS 벤더는 외부 C 프로그램과 결합할 수 있는 선행 컴파일러를 제공하고 있으며 오라클에서는 이를 Pro*C라고 한다. Pro*CPL/SQL과 같이 절차적 프로그래밍이 가능한 프로그램 도구로서 PL/SQL처럼 오라클 내부에서 수행되는 프로그램이 아니라 실행 가능한 외부 프로그램으로 작성이 되어 관련 작업을 수행할 수 있게 해 주는 도구이다. 다만 일반 프로그램 언어들과 다른 점이 있다면, Pro*C만으로는 실행 파일을 만들어 낼 수 없다는 것이다. 그래서 Pro*C를 Pre Compiler(설행 컴파일러)라고 한다.Pro*C는 선행 컴파일러이기 때문에 선행 컴파일을 통해서 실행 파일이 아닌 C 컴파일러가 인식할 수 있는 출력 파일(xxx.c)을 생성한다. 선행 컴파일러를 통해 생성된 C 프로그램은 C 프로그램의 통상적인 방법으로 컴파일되고, 오라클 라이브러리와 결합(링크)되어 실행 모듈이 만들어진다.Pro*C 프로그래밍을 위해서는 Pro*C 고유의 문법을 숙지하고 있어야 하지만 C 프로그래밍에 대한 기본 지식도 있어야 한다. 특히 메모리와 관련된 부분이나 포인터 등과 같은 C의 고급 기능을 사용하기 위해서는 C 프로그래밍에 대한 지식을 갖추고 있어야 한다.[2]

작성박식

특징

프로씨를 사용하면 프로그래머는 통상의 프로그래밍 과정에 별도의 처리를 추가해야 한다. 그러나 별도의 처리를 추가함으로써, 상당량의 작업을 프로씨가 수행하게 된다.

C 언어를 작성해서 기동할 때의 통상의 작업 순서는 다음과 같다.

  1. C 언어를 작성한다.
  2. 프로그램을 컴파일해서 오브젝트 파일을 작성한다.
  3. 오브젝트 파일을 링크해서 실행 가능한 파일을 작성한다.
  4. 프로그램을 실행한다.

프로그래머가 소스프로그램에 프로씨를 사용하는 경우에는, 위에서 기술한 순서에 한가지 처리가 더 추가된다.

  1. 프로씨 프로그램을 작성한다.
  2. 프로씨를 이용해서 프로그램을 프리컴파일 한다.
  3. 프로그램를 컴파일해서 오브젝트 파일을 작성한다.
  4. 오브젝트 파일을 링크해서 실행 가능한 파일을 작성한다.
  5. 프로그램을 실행한다.[3]

종류

4GL 프로그램으로 DB 핸들링 프로그램을 작성하기 위해서 가장 먼저 할 일은 DB 접속 방식을 선택하는 것이다. ODBC 방식으로 할 것인지, OLE-DB 방식으로 진행할 것인지를 선택한 후에 그에 맞는 프로그램 방식을 결정해야 한다.Pro*C 역시 다르지 않다. GUI 방식의 4GL 프로그램처럼 마우스 클릭을 통해 설정할 수 있는 것이 아니라 코딩 시점에 Header 파일 선정, 프로그램 방식의 선정, 컴파일 옵션의 변경을 통해 작성 방식을 선택하여 사용할 수 있다. Pro*C에서 프로그램 작성 방식은 두 가지로 나누어지며, 하나는 내장 SQL 방식이고, 다른 하나는 OCI(Oracle Call Interface) 방식이다.

내장 SQL 방식

내장 SQL 방식이란 C 프로그램 내부에서 'EXEC SQL'이라는 접두사 뒤에 SQL 문장을 직접 기술하는 방식이다. 내장 SQL 방식은 통상적으로 가장 많이 사용된다. 우리에게 익숙한 윈도우 환경의 개발툴과 비교해 본다면, OLEODBC를 통해 데이터베이스와 연결하여 작업하는 방식의 프로그램과 비슷하다고 할 수 있다. 내장 SQL 문장에는 일반 SQL 문장뿐만 아니라 오라클을 이용한 다양한 형식의 내부 문장을 사용할 수 있으며, 미리 생성되어 있는 Stored Procedure, Package 또는 개발자가 임의로 작성한 PL/SQL도 사용할 수 있다. 즉, 오라클 데이터베이스에서 사용하는 모든 문장, 즉 DML, DDL, DCL, PL/SQL, 일반 SQL 문장을 내장 SQL 문장에 사용할 수 있다.

OCI 방식

OCI(Oracle Call Interface) 방식이란 OCI 라이브러리를 통해서 오라클 SQL 문장을 직접 호출하여 사용하는 방식이다. 내장 SQL 방식에 비해서 조금 더 하위 레벨에 해당하는 프로그래밍 방식으로서 OCI를 통해서 DB 핸들링 작업을 실행하기 때문에 데이터베이스 서버의 자원을 효율적으로 관리하고 SQL 문장 수행의 각 단계를 직접 제어할 수 있다는 장점이 있다.그러나 프로그래밍 방법에 있어 내장 SQL 프로그램에 비해 복잡하기 때문에 개발자의 숙련도가 요구된다는 단점이 있다. Unix 환경의 C 프로그램을 대부분의 개발자들은 쉽게 생각하기보다는 어렵게 생각하고 있다. 이는 대부분의 제어를 개발자가 직접 기술해야 하기 때문이다. 반면에 GUI 프로그램은 마우스 클릭 몇번만으로 대부분의 설정이 가능해진다. 이렇듯 OCI 프로그램에서는 모든 부분의 직접 제어나 기술이 내장 SQL 프로그램에 비해서 어렵게 여겨지는 것이다. 물론 대부분의 프로그램에는 특정한 패턴이 있으므로 그 패턴을 익히기만 하면 어떤 프로그램 방식이 더 쉽다, 혹은 더 어렵다고 단정지을 수는 없다.대부분의 경우라고 할 수는 없지만 적지 않은 개발자들이 내장 SQL 문장 방식을 사용하고 있다.[2]

각주

  1. Pro*C 란 - 초보자를 위한 개념 설명〉, 《티스토리》 2010-03-18
  2. 2.0 2.1 Pro*C 소개와 기본 특징 및 오류 진단〉, 《티스토리》 2017-09-09
  3. 짱가, 〈Pro*C참고〉, 《네이버블로그》, 2004-05-15

참고자료

같이 보기


  의견.png 이 프로씨 문서는 프로그래밍에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.