[번역] 데이터유형과 호스트변수( Datatypes and Host Variables ) - 01
Language/Pro*C 2015. 5. 20. 15:54목 차
▣ 오라클 데이터 유형 (Oracle Datatypes)
▣ 호스트 변수 ( Host Variables )
▣ 지시자 변수 ( Indicator Variables )
▣ VARCHAR 변수 ( VARCHAR Variables )
▣ 커서 변수 ( Cursor Variables )
▣ CONTEXT 변수 ( CONTEXT Variables )
▣ Universal ROWIDs
▣ 호스트 구조체 ( Host Structures )
▣ 포인터 변수 ( Pointer Variables )
▣ Globalization Support
▣ NCHAR 변수 ( NCHAR Variables )
▣ 호스트 변수 ( Host Variables )
▣ 지시자 변수 ( Indicator Variables )
▣ VARCHAR 변수 ( VARCHAR Variables )
▣ 커서 변수 ( Cursor Variables )
▣ CONTEXT 변수 ( CONTEXT Variables )
▣ Universal ROWIDs
▣ 호스트 구조체 ( Host Structures )
▣ 포인터 변수 ( Pointer Variables )
▣ Globalization Support
▣ NCHAR 변수 ( NCHAR Variables )
1) 오라클 데이터 유형 (Oracle Datatypes)
1-1) Internal Datatype
1-1) Internal Datatype
데이터베이스 컬럼에 저장된 값들을 위해서 오라클은 Internal Datatype를 사용한다.
NCHAR나 NVARCHAR2는 다중바이트 문자 데이터를 저장하는데 사용된다.
LOB 유형은 구조화되지 않은 데이터((text, graphic images, video clips, or sound waveforms)를
저장하는데 사용되며, BFILE data는 데이터 베이스 밖에 파일을 저장한다.
1-2) External Datatype
External Datatype은 아래의 표를 참조한다.
2) 호스트 변수 ( Host Variables )
호스트 변수는 오라클과 호스트 프로그램사이의 통신을 위한 키이다. precompiler 프로그램은 호스트
변수로부터 오라클로 데이터를 입력하고 오라클은 데이터를 호스트변수로 추출한다.
2-1) 호스트변수 선언
C프로그래밍 언어의 규칙에 따라서 호스트 변수를 선언한다.
MODE=ORACLE로 지정되어 있으면, Declare Section에 변수를 선언할 필요는 없다. 만약 모드가
그렇지 않다면, FIPS flagger는 이것에 대해서 경고를 알릴것이다.
모드가 CODE=CPP 혹은 PARSE=NONE 혹은 PARSE=PARTIAL이면, Declare Section을 사용해야만
한다.
아래의 표는 호스트 변수를 선언할때 사용할 수 있는 데이터 유형이다.
아래의 표는 호환가능한 오라클 내부 데이터 유형을 보여주고 있다.
C유형의 1차배열은 호스트 변수에서 사용 가능하다. char[n] 와 VARCHAR[n]에서 n은 string의
최대길이를 지정한 것이다. 이차원 배열은 char[m][n] 와 VARCHAR[m][n]에 대해서 사용 가능
하며 n은 string의 최대길이를 지정하며 m은 배열에서 string의 수를 지정 하는 것이다.
단순한 C 유형의 포인터를 사용할 수 있으며 char[n] 와 VARCHAR[n]에 대한 포인터는 char 혹은
VARCHAR로 선언되어야만 한다. 포인터 배열은 지원하지 않는다.
Storage-Class Specifiers
Pro*C/C++은 호스트 변수를 선언할때 auto, extern, 그리고 static 과같은 storage-class specifiers
를 사용할 수 있다. register는 사용 할 수 없다. 예제는 아래와 같다.
extern char protocol[15];
extern char msg[]; <-- 255자를 넘어가는 경우 문제가 발생한다.
extern char msg[]; <-- 255자를 넘어가는 경우 문제가 발생한다.
the const 와 volatile 유형 qualifiers를 사용가능하다.
2-2) 호스트변수 참조
호스트 변수는 colon (:)을 붙여서 표시하여야 한다. 예제는 아래의 코드와 같다.
char buf[15];
int emp_number;
float salary;
...
int emp_number;
float salary;
...
gets(buf);
emp_number = atoi(buf);
EXEC SQL SELECT sal INTO :salary FROM emp
WHERE empno = :emp_number;
혼란스럽지만, 오라클의 컬럼및 테이블 이름과 같은 이름으로 호스트 변수를 줄 수 있다.
아래에 예제가 있다.
int empno;
char ename[10];
float sal;
...
char ename[10];
float sal;
...
EXEC SQL SELECT ename, sal INTO :ename, :sal FROM emp
WHERE empno = :empno;
함수 호출이나 수치 표현은 호스트 변수로 사용될 수 없다. 아래의 코드는 유효하지않은 코드이다.
#define MAX_EMP_NUM 9000
...
...
int get_dept();
...
EXEC SQL INSERT INTO emp (empno, ename, deptno) VALUES
(:MAX_EMP_NUM + 10, ’CHEN’, :get_dept());
(:MAX_EMP_NUM + 10, ’CHEN’, :get_dept());
출처 - http://younbok.egloos.com/9342729
'Language > Pro*C' 카테고리의 다른 글
[번역] 데이터유형과 호스트 변수 (Datatypes and Host Variables ) - 03 (0) | 2015.05.20 |
---|---|
[번역] 데이터유형과 호스트 변수 (Datatypes and Host Variables ) - 02 (0) | 2015.05.20 |
[번역] pro*c 데이터베이스 개념(Database Concepts) - 03 (0) | 2015.05.20 |
[번역] pro*c 데이터베이스 개념(Database Concepts) - 02 (0) | 2015.05.20 |
[번역] pro*c 데이터베이스 개념(Database Concepts) - 01 (0) | 2015.05.20 |