日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

完全版 ESQL/C資料三( 五 )


char **V; /*Ptr to Arr of addresses of main variables */
long *L; /* Ptr to Arr of lengths of buffers */
short *T; /* Ptr to Arr of types of buffers */
short **I; /* Ptr to Arr of addresses of indicator vars */
long F; /* Number of variables found by DESCRIBE */
char **S; /* Ptr to Arr of variable name pointers */
short *M; /* Ptr to Arr of max lengths of var. names */
short *C; /* Ptr to Arr of current lengths of var. names */
char **X; /* Ptr to Arr of ind. var. name pointers */
short *Y; /* Ptr to Arr of max lengths of ind. var. names */
short *Z; /* Ptr to Arr of cur lengths of ind. var. names */
};
其中,上述變量的含義為:
lN:可以容納的列的最大數(shù)目或參數(shù)的最大數(shù)目 。它對應(yīng)于DB2的SQLDA的SQLN字段 。
lF:當(dāng)前SQLDA中的實(shí)際列數(shù)或參數(shù)個(gè)數(shù) 。它對應(yīng)于DB2的SQLDA的SQLD字段 。
lT:指明數(shù)據(jù)類型 。它對應(yīng)于DB2的SQLVAR結(jié)構(gòu)中的SQLTYPE字段 。lV:指向字符數(shù)組 。該字符數(shù)組可能是列的數(shù)據(jù),或傳送參數(shù)的數(shù)據(jù) 。它對應(yīng)于DB2的SQLVAR結(jié)構(gòu)中的SQLDATA字段 。
lL:給出列或參數(shù)值的長度 。它對應(yīng)于DB2的SQLVAR結(jié)構(gòu)中的SQLLEN字段 。
lI:指向指示符變量,標(biāo)志數(shù)據(jù)是否為NULL 。它對應(yīng)于DB2的SQLVAR結(jié)構(gòu)中的SQLIND字段 。
lS:指向存放列名或參數(shù)名的字符數(shù)組 。它對應(yīng)于DB2的SQLVAR結(jié)構(gòu)中的SQLNAME結(jié)構(gòu)的data[] 。
lM:指向一個(gè)整數(shù),該整數(shù)是S的申請長度 。在DB2中,SQLVAR結(jié)構(gòu)中的SQLNAME結(jié)構(gòu)的data[30]的大小是固定的,即是30 。而ORACLE中是可變的 。其大小為M指向的整數(shù) 。
lC:指向一個(gè)整數(shù),該整數(shù)是S的實(shí)際長度 。它對應(yīng)于DB2的SQLVAR結(jié)構(gòu)中的SQLNAME結(jié)構(gòu)的 length 。
lX:指向一個(gè)字符數(shù)組 。該字符數(shù)組存放了指示符變量的名稱,指示符變量表示傳遞的參數(shù)是否為NULL 。DB2中無相應(yīng)的對應(yīng)字段 。這個(gè)緩沖區(qū)僅僅供DESCRIBE BIND LIST語句使用 。
lY:指向一個(gè)整數(shù),該整數(shù)是X的申請的最大長度 。DB2中無相應(yīng)的對應(yīng)字段 。
lZ:指向一個(gè)整數(shù),該整數(shù)是X的實(shí)際長度 。DB2中無相應(yīng)的對應(yīng)字段 。
ORACLE的數(shù)據(jù)類型分成兩種情況:內(nèi)部數(shù)據(jù)類型和外部數(shù)據(jù)類型 。ORACLE的內(nèi)部數(shù)據(jù)類型是ORACLE在數(shù)據(jù)庫中存放數(shù)據(jù)的類型,在使用DESCRIBE SELECT LIST命令,就返回內(nèi)部數(shù)據(jù)類型代碼 。下表是所有的內(nèi)部數(shù)據(jù)類型:Oracle 內(nèi)部數(shù)據(jù)類型 代碼VARCHAR2 1
NUMBER 2
LONG 8
ROWID 11
DATE 12
RAW 23
LONG RAW 24
CHARACTER (or CHAR) 96
MLSLABEL 106外部數(shù)據(jù)類型是輸入宿主變量和輸出宿主變量存放數(shù)據(jù)的類型 。DESCRIBE BIND VARIABLES命令將SQLDA中的數(shù)據(jù)類型代碼置為0 。所以,必須在OPEN語句前設(shè)置外部數(shù)據(jù)類型代碼,以告訴ORACLE是什么外部數(shù)據(jù)類型 。下表是具體的外部數(shù)據(jù)類型:外部數(shù)據(jù)類型 代碼 C數(shù)據(jù)類型VARCHAR2 1 char[n]
NUMBER 2 char[n] (n 22)
INTEGER 3 int
FLOAT 4 float
STRING 5 char[n 1]
VARNUM 6 char[n] (n 22)
DECIMAL 7 float
LONG 8 char[n]
VARCHAR 9 char[n 2]
ROWID 11 char[n]
DATE 12 char[n]
VARRAW 15 char[n]
RAW 23 unsigned char[n]
LONG RAW 24 unsigned char[n]
UNSIGNED 68 unsigned int
DISPLAY 91 char[n]
LONG VARCHAR 94 char[n 4]
LONG VARRAW 95 unsigned char[n 4]
CHAR 96 char[n]
CHARF 96 char[n]
CHARZ 97 char[n 1]
MLSLABEL 106 char[n]當(dāng)ORACLE從用戶程序中接收參數(shù)值并向用戶程序傳送查詢結(jié)果時(shí),就在自己的內(nèi)部數(shù)據(jù)格式與它所運(yùn)行的計(jì)算機(jī)系統(tǒng)的數(shù)據(jù)格式之間自動進(jìn)行數(shù)據(jù)轉(zhuǎn)換 。DESCRIBE SELECT L IST命令可以返回ORACLE的內(nèi)部數(shù)據(jù)類型 。對于字符數(shù)據(jù),內(nèi)部數(shù)據(jù)類型同外部數(shù)據(jù)類型是相一致的;而有些內(nèi)部數(shù)據(jù)類型對應(yīng)到外部數(shù)據(jù)類型后,導(dǎo)致處理復(fù)雜化,如:你想將NUMBER數(shù)據(jù)類型的值處理為C中的FLOAT,那么你可以設(shè)置相應(yīng)的T值為FLOAT(4)和L值為FLOAT的長度 。在FETCH時(shí),ORACLE自動在內(nèi)部數(shù)據(jù)類型和外部數(shù)據(jù)類型之間轉(zhuǎn)換 。在DB2的SQLVAR結(jié)構(gòu)中,列的說明信息、數(shù)據(jù)等存放在一個(gè)單獨(dú)的sqlvar結(jié)構(gòu)中 。而在ORACLE數(shù)據(jù)庫中,不存在一個(gè)單獨(dú)的結(jié)構(gòu)來說明每列的信息 。而是通過數(shù)組的方式實(shí)現(xiàn) 。如下圖所示,描述了1個(gè)輸入?yún)?shù),參數(shù)名為bonus 。假設(shè)的最大參數(shù)個(gè)數(shù)為3 。

推薦閱讀