3. 첫 번째 Pro*C 프로그램 작성하기
Pro*C는 Oracle에서 제공하는 미리 컴파일된 C 프로그램의 소스 코드에 SQL 문장을 포함시킬 수 있는 도구입니다. 이 도구를 사용하면 C 프로그램 내에서 Oracle 데이터베이스와의 상호작용을 쉽게 구현할 수 있습니다. 이번 섹션에서는 Pro*C를 사용하여 간단한 C 프로그램을 작성하고 Oracle 데이터베이스와 연동하는 방법을 안내하겠습니다.
1. Pro*C란?
Pro*C는 C 프로그래밍 언어와 SQL 쿼리를 결합할 수 있는 방법을 제공하는 Oracle의 미리 컴파일된 도구입니다. Pro*C 소스 코드는 SQL 문을 포함하고 있으며, 이 소스 코드는 Pro*C 컴파일러에 의해 C 코드로 변환됩니다. 변환된 C 코드는 이후 일반 C 컴파일러를 사용하여 실행 파일로 컴파일할 수 있습니다.
2. Pro*C 프로그램의 구조
Pro*C 프로그램은 C 코드와 SQL 문이 혼합되어 있습니다. 기본적인 구조는 다음과 같습니다:
#include <stdio.h>
#include <sqlca.h>
EXEC SQL BEGIN DECLARE SECTION;
int id;
char name[50];
EXEC SQL END DECLARE SECTION;
int main() {
/* Oracle 데이터베이스에 연결하는 부분 */
EXEC SQL CONNECT :username IDENTIFIED BY :password;
/* SQL 쿼리 실행하는 부분 */
EXEC SQL SELECT first_name INTO :name FROM employees WHERE employee_id = :id;
/* 결과 출력하는 부분 */
printf("Employee Name: %s\n", name);
/* 연결 종료 */
EXEC SQL COMMIT;
EXEC SQL DISCONNECT;
return 0;
}
3. 환경 설정
Pro*C 프로그램을 작성하기 전에 Oracle 데이터베이스 클라이언트가 설치되어 있어야 하며, Pro*C 컴파일러도 필요합니다. 환경 변수를 설정하고 Oracle 데이터베이스에 연결할 수 있도록 준비합니다. 일반적으로 다음과 같은 환경 변수를 설정합니다:
- ORACLE_HOME: Oracle 테이블 및 데이터베이스 클라이언트의 경로를 지정합니다.
- LD_LIBRARY_PATH: Oracle 라이브러리가 위치한 디렉터리를 추가합니다.
4. 첫 번째 Pro*C 프로그램 작성하기
이제 간단한 Pro*C 프로그램을 작성해 보겠습니다. 이 프로그램은 데이터베이스의 직원 정보를 조회하는 기능을 수행합니다.
#include <stdio.h>
#include <sqlca.h>
EXEC SQL BEGIN DECLARE SECTION;
char username[20] = "your_username"; // DB 사용자 이름
char password[20] = "your_password"; // DB 비밀번호
int id;
char name[50];
EXEC SQL END DECLARE SECTION;
int main() {
EXEC SQL WHENEVER SQLERROR DO break;
/* Oracle 데이터베이스에 연결 */
EXEC SQL CONNECT :username IDENTIFIED BY :password;
printf("Enter Employee ID: ");
scanf("%d", &id);
/* SQL 쿼리 실행 */
EXEC SQL SELECT first_name INTO :name FROM employees WHERE employee_id = :id;
/* 결과 출력 */
printf("Employee Name: %s\n", name);
/* 연결 종료 */
EXEC SQL COMMIT;
EXEC SQL DISCONNECT;
return 0;
}
5. 프로그램 컴파일
위에서 작성한 Pro*C 프로그램은 `.pc` 파일 확장자를 사용하여 저장합니다. 예를 들어, `employee_info.pc`라는 파일에 프로그램을 저장했다고 가정합니다. 이 파일을 컴파일하기 위해 Pro*C 컴파일러를 사용해야 합니다. 다음 명령어를 사용할 수 있습니다:
proc employee_info.pc
위 명령어는 `employee_info.c`라는 C 파일을 생성합니다. 이 파일은 C 컴파일러로 컴파일할 수 있습니다.
6. C 컴파일러로 컴파일
생성된 C 파일을 gcc와 같은 C 컴파일러를 사용하여 실행 파일로 컴파일합니다. 다음과 같이 명령어를 입력합니다:
gcc employee_info.c -o employee_info -lsqlca -lclntsh
7. 프로그램 실행하기
컴파일이 완료되면 프로그램을 실행할 수 있습니다. 다음 명령어를 입력하여 프로그램을 실행하세요:
./employee_info
프로그램은 직원 ID를 요청합니다. 정보를 입력하고 엔터 키를 누르면 해당 직원의 이름을 출력합니다.
8. 에러 처리
실제 프로그램에서는 에러 처리가 필요합니다. Pro*C는 SQL 오류 발생 시 프로그램 흐름을 제어할 수 있는 다양한 방법을 제공합니다. 예를 들어, `EXEC SQL WHENEVER SQLERROR DO break;` 문을 사용하여 SQL 오류가 발생하면 즉시 처리를 종료합니다.
9. SQL 예시
다양한 SQL 쿼리를 작성할 수 있습니다. 예를 들어, 직원들의 모든 정보를 조회하는 쿼리는 다음과 같습니다:
EXEC SQL SELECT employee_id, first_name, last_name INTO :id, :name FROM employees;
10. 결론
Pro*C는 C 프로그램과 Oracle 데이터베이스의 효율적 연동을 도와주는 강력한 도구입니다. 이번 섹션에서는 Pro*C를 사용하여 간단한 프로그래밍을 통해 데이터베이스와의 연결, SQL 쿼리 수행, 에러 처리 등을 배웠습니다. 더욱 복잡한 쿼리와 데이터베이스 연동 기능은 다양한 문서와 자료를 통해 심화 학습을 진행할 수 있습니다.
이제 여러분은 첫 번째 Pro*C 프로그램을 작성하고 실행할 준비가 되었습니다. 앞으로 더 다양한 Pro*C 기능과 활용법을 탐구해보시기 바랍니다.