본문 바로가기

Pro*C

[Pro*C 오라클 DB] Dynamic SQL 프로그램, SQL 동적처리 오라클에서 Analytic Function 이라는 통계 함수를 제공함 SQL> SELECT DEP, EMPNO, ENAME, SAL , CUMULATIVE, SUM(SAL) OVER(PARTITION BY DEPTNO ORDER BY SAL) COMULATIVE FROM EMP 위 SQL 문장은 Sqlplus 에서는 실행되지만Pro*C 프로그램으로 작성한 후 컴파일을 수행하면 컴파일 에러가 발생한다.-> Pro*C 컴파일러가 Analytic Function 문장을 SQL 문장으로 인식하지 못해서 발생 Analytic Function의 주요 특징OVER 절 사용Analytic Function은 OVER 절과 함께 사용OVER 절을 통해 데이터를 특정 그룹으로 나누거나 정렬 기준을 설정행별 계산 가.. 더보기
[Pro*C 오라클 DB] 프로그램 오류 처리, 데이터 처리 ORA - 1403 추출할 데이터가 없거나 갱신할 데이터가 없어서 발생함ORA - 0001 중복된 데이터가 입력되어 발생ORA - 1555 SELECT 중 읽고 있는 롤백 세그먼트의 이미지 클리어등 대부분의 경우는 쉽게 해결이 가능하다. 하지만ORA - 1405 의 경우에는 다른 특징이 있음추출된 데이터에 NULL 이 있을 경우 발생-> DB의 NULL과 0X00 같은 것이아님데이터의 처리에 있어 정의할 수 있는 값이 없기 때문에 발생 해결방법1. 프로그램에 의한 해결방법EXEC SQL DECLARE EMP CURSOR FOR SELECT NVL(empno,0), NVL(ename,'-') FROM scott.emp; NULL 데이터는 NVL 함수에 기술된 대로 치환되어 추출돈다.윈칙적으로 N.. 더보기
[Pro*C 오라클 DB] 호스트 변수 (배열, 구조체)를 이용한 프로그램 #include #include EXEC SQL BEGIN DECLARE SECTION; VARCHAR uid[20]; VARCHAR pwd[20]; int empno[5]; VARCHAR ename[5][20];EXEC SQL END DECLARE SETION;viod main() { int end; int loopIndex; int result; strcpy((char *)uid.arr,"userid"); uid.len = (short)strlen((char *)uid.arr); strcpy((char *)pwd.arr,"pwd"); uid.len = (short)strlen((char *)pwd.arr); EXEC SQL CON.. 더보기
[Pro*C 오라클 DB] Pro*C 컴파일 Pro*C 를 이용하여 실행파일을 만들기 위해서 3단게 작업을 거쳐야함 1단계 : 오라클 Pre Compiler를 이용하여 소스 프로그램 생성2단게 : Compiler 사용 컴파일3단계 : Linker로 실행 가능한 프로그램을 생성한다            링커는 라이브러리 호출을 해결하기 위하여 오라클 SQL 실행시간 라이브러리 호출             실핼 가능한 프로그램을 생성하기 위해 SQL 문장을 처리하는오라클 라이브러리 SQLLIB과 오브젝트코드                   를 처리  1. Pro*C Precompiler를 사용해 .pc 파일을 .c 파일로 변환Pro*C 소스 파일(.pc)은 Oracle SQL과 C 코드를 혼합하여 작성됩니다.proc 명령어를 사용하여 .pc 파일을 .c .. 더보기
[Pro*C 오라클 DB] Pro*C 프로그램 구성과 DB접속 Pro*C 프로그램은 큰 맥락에서 2개 부분으로 구성 되어있다.1. 어플리케이션 프롤로그      ㄴ> 변수를 정의하고 Pro*C 프로그램을 위한 일반적인 준비수행2. 어플리케이션 본체        ㄴ> ORACLE 데이터를 조작하기 위한 쿼리문을 포함               Pro*C가 처리할 때 필요로 하는 코드의 앞뒤에 C코드 지정 가능 어플리케이션 프롤로그1. 선언절Pro*C 프로그램에서 사용 되는 모든 호스트 변수 및 지시자 변수의 선언을 의미외부 선언은 전역, 내부 선언은 지역적으로 사용함 1-1. 호스트 변수Pro*C에서 사용하는 변수 중에서 SQL 문과 프로그램 문에서 모두 참조되어 사용되는 변수데이터 형은 선언 절에서 Pro*C 의 호스트 언어를 사용해서 선언되어야함호스트 변수의 선언 .. 더보기
[Pro*C 오라클 DB] Pro*C 오류,에러 진단과 처리 에러나 경고를 감지하고 정보를 얻기 위해서는 별도 통신 영역의 정보를 가진 도구가 필요함 Pro*C 에서는 SQL 통신영역(SQLCA)과 오라클 통신영역(ORACA)라는 두 개의 특수한 데이터 구조를 지원한다 SQLCA 는 Pro*C 프로그램에 필수 요소이고 ORACA는 더 많은 정보를 얻기 위한 선택 요소임 SQLCA를 사용하여 모든 QL 문장의 상태를 감지하고 상태코드의 정보를 줌더 많은 확장 정보를 얻고자 할 때, 또는 오류가 발생한 시점에 수행된 SQL문의 정보를 확인하기 위해 ORACA를 사용함 Oracle Text File요구사항내용sqlca필수SQLCA 를 위한 선언oraca선택ORACA 를 위한 선언  두 가지 오류 검출 WHENEVER 문장을 사용하여 발생 가능한 모든 오류에 대한 동일한.. 더보기
[Pro*C 오라클 DB] Pro*C 시작 Pro*C 개요PL/SQL은 오라클 내부라는 한정된 공간에서 실행되는 프로그램내부라는 한정된 제약을 해결하기 위해 외부 C 프로그램과 결합할 수 있는 선행 컴파일러 제공-> 오라클에서 Pro*C 라고한다오라클 내부가 아닌 외부 프로그램으로 작성되어 작업을 수행-> Pro*C 만으론 컴파일을 할 수 없다.-> 선행 컴파일Pro*C 는 실행파일이 아닌 C 컴파일러가 인식 할 수 있는 출력 파일(~~~.c) 파일을생성한다.C프로그램의 통상적인 방법으로 컴파일 되고, 오라클 라이브러리와 결합되어 실행모듈을 만든다. 확장 범위큰 틀에서 보면 C 프로그램안에 SQL 코드가 들어가 있는 것이 Pro*C 프로그램이다.C로 구현할 수 있는 모든 기능은 Pro*C 로도 구현 가능하다. 프로그램 작성방식 컴파일 옵션의 변경.. 더보기