본문 바로가기

ProC

(16)
[PRO*C] 거의 모든 예제가 다 있다. 만들어 주신분에게 감사를 드립니다.^^; 이글은 초보자를 위한 것으로 Pro*C란 무엇인가를 설명해 놓은 것일 뿐입니다. 그냥 참조만 하시기 바랍니다. 원본 출처 : http://home.bcline.com/hoya1/ 1.1 Pro*C란? ORACLE RDBMS에 준비된 Pro*C툴은, SQL문을 포함한 C 프로그램을, ORACLE 데이터베이스내에 있는 데이터에 접근과, 조작을 할 수 있는 C 프로그램으로 변환하기 위한 것이다. Pro*C는 프리컴파일러이기 때문에, 입력 파일 내에 있는 EXEC SQL 문을 적당한 ORACLE 콜로 변환해서 출력 파일을 작성한다. 그 다음 이 출력 파일을 C 프로그램에 대한 통상의 방법으로 컴파일하고 링크해서 실행모듈을 작성한다. 1.2 개요 Pro*C 툴을 사용하면 ..
PCC-S-02015, unable to open include file PCC-S-02015, unable to open include file 에러가 날경우 헤더파일을 제대로 찾지 못하는 것이므로 $ORACLE_HOME/precomp/admin/pcscfg.cfg 파일을 수정해준다. gcc -v 로 버전을 확인해서 Target: 에 해당하는 pcscfg.cfg 파일의 경로설정부분을 찾고 알맞게 바꿔준다. 실제 실행 결과: 아래 붉은 부분이 맞게 설정해야 할 부분이다 gcc -v Using built-in specs. Target: x86_64-redhat-linux Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enabl..
ORA-01405: fetched column values is NULL ORA-01405: fetched column values is NULL Pro*C로 작성된 프로그램으로 어느 테이블의 데이터를 Fetch받으려 할 때 그 테이블의 특정행의 특정컬럼값이 NULL일 경우 ORACLE은 ORA-01405에러를 발생시킨다. 컬럼 속성이 NULL값을 허용하는 컬럼의 경우 NVL([COLUMN_NAME], '')로 해결하면 된다고 하나 이는 경우에 따라 엄청난 노가다거리 일 수 있다. 만약 프로그램을 작성한 사람이 컴파일 스크립트화일의 수정이 가능하다면 아래와 같이 proc 옵션을 수정하여 쉽게 해결 할 수 있다. proc mode=oracle dbms=v8 unsafe_null=yes iname=[proc_file.pc] 위의 옵션중 unsafe_null=yes가 ORA-014..
Pro*C 어플리케이션의 작성 Pro*C 어플리케이션의 작성 어플리케이션의 구조 EXEC SQL BEGIN DECLARE SECTION; 바인드 변수 선언 EXEC SQL END DECLARE SECTION; EXEC SQL INCLUDE "sqlca.h" main(){ EXEC SQL CONNECT :username IDENTIFIED BY :password; Embedded SQL문 작업 EXEC SQL COMMIT WORK; 또는 EXEC SQL ROLLBACK RELEASE; } BEGIN DECLARE SECTION 바인드 변수를 선언하는 부분이다. 이 영역에 선언한 변수만 SQL문에 사용할 수 있었으나 현재에는 어디서라도 바인드변수를 선언하고 사용할 수가 있다. Pro*C 2.XX 대부터는 이영역이 의미가 없어졌다. EXE..
Pro*C 컴파일 Pro*C 컴파일 일단 "sample.pc"로 어플리케이션 프로그램의 코딩이 끝났으면 Pro*C 프리컴파일을 해야 한다. proc INAME=sample1.pc proc sample1.pc proc에서 사용되는 프리컴파일러 옵션들의 Default 값들은 프리컴파일러 내에 포함되어 있고, Pro*C System Configuration file에 있고, 또 user configuration file을 작성하여 지정할 수도 있다. 예를 들어 MAXOPENCURSORS라는 옵션은 프리컴파일러 내에 10으로 되어있는데, system 환경화일에 MAXOPENCURSORS=32라고 하면 Default값은 32가 되는 것이다 . 또 user가 정의한 환경화일을 지정해 주면 Default 값은 그 값으로 변경된다 . ..
Dynamic SQL의 사용 Dynamic SQL의 사용 보통의 어플리케이션 프로그램에서는 SQL문이 확정된 후 프로그램에 적용한다. 그러나, 다이나믹 SQL의 사용하는 경우는 사용자의 입력에 의거해서 SQL문이 작성되거나 다른 STATIC SQL문의 결과에 의해서 SQL문이 생성되는 경우 다이나믹SQL을 사용하게 된다. 비교될 컬럼이 변경되는 경우(WHERE절), 참조할 테이블이 변경되어야 하는 경우, INSERT, UPDATE시의 컬럼이 변경되는 경우이 있다. Method SQL문 1 QUERY문이 아니면서 호스트 변수가 없는 경우 2 QUERY문이 아니면서 호스트 변수가 정해지지 않은 경우 3 호스트 변수와 SELECT컬럼이 정해진 QUERY문인 경우 4 호스트 변수와 SELECT컬럼이 정해지지 않은 QUERY문인 경우 < M..
SQLCA(SQL Communication Area) SQLCA(SQL Communication Area) 데이터베이스와 어플리케이션 프로그램 상호간에 여러가지 정보를 얻는 구조체 SQLCA 구조체 (SQL Communication Area) struct sqlca { /* ub1 */ char sqlcaid[8]; /* b4 */ long sqlabc; /* b4 */ long sqlcode; struct { /* ub2 */ unsigned short sqlerrml; /* ub1 */ char sqlerrmc[70]; } sqlerrm; /* ub1 */ char sqlerrp[8]; /* b4 */ long sqlerrd[6]; /* ub1 */ char sqlwarn[8]; /* ub1 */ char sqlext[8]; }; sqlcaid SQL ..
Pro*C에서 변수의 사용 Pro*C에서 변수의 사용 데이터의 Type C변수 타입 설명 char single charactor char[n] n-charactor array(string) Int integer Short small integer Long large integer Float floating-point number(usually single precision) Double floating-point number(always double precision) VARCHAR[n] variable-length string 호스트 변수를 위한 C데이타 타입 C와 Oracle 데이타 타입 호환성 Internal Type(Oracle) C Type 설명 VARCHAR2(Y)(Y:1~2000) char single characto..