LibOciLib使用說明git
整理者:赤勇玄心行天道github
QQ:280604597sql
Email:280604597@qq.com數據庫
你們有什麼不明白的地方,或者想要詳細瞭解的地方能夠聯繫我,我會認真回覆的!緩存
你能夠隨意轉載,無需註明出處!安全
寫文檔實屬不易,我但願你們能捐助我,繼續支持個人工做,我會繼續努力幫助你們,金額隨意,1塊也行,感謝!服務器
支付寶:280604597@qq.com多線程
QQ紅包oracle
OCILIB的QQ羣:553666676函數
一、 複製解決方案根目錄下的「LibOciLib」文件夾到調用程序的解決方案根目錄下。
二、 調用程序需添加代碼:
#include "..\LibOciLib\ocilib.h" #if (defined _WIN64) && (defined _DEBUG) #pragma comment(lib, "..\\LibOciLib\\LibOciLib_x64_Debug_MDd_LIB.lib") #pragma comment(lib, "..\\LibOciLib\\oci_x64.lib") #elif (defined _WIN64) && (defined NDEBUG) #pragma comment(lib, "..\\LibOciLib\\LibOciLib_x64_Release_MD_LIB.lib") #pragma comment(lib, "..\\LibOciLib\\oci_x64.lib") #elif (defined _WIN32) && (defined _DEBUG) #pragma comment(lib, "..\\LibOciLib\\LibOciLib_x86_Debug_MDd_LIB.lib") #pragma comment(lib, "..\\LibOciLib\\oci_x86.lib") #elif (defined _WIN32) && (defined NDEBUG) #pragma comment(lib, "..\\LibOciLib\\LibOciLib_x86_Release_MD_LIB.lib") #pragma comment(lib, "..\\LibOciLib\\oci_x86.lib") #endif |
三、 編譯調用程序的項目。
官方網站:http://vrogier.github.io/ocilib/
DATABASE TYPE |
C API TYPE |
C API SUBTYPE |
C++ API |
C++ API SUBTYPE |
PL/SQL BOOLEAN |
boolean |
bool |
||
NUMBER |
short |
short |
||
NUMBER |
unsigned short |
unsigned short |
||
NUMBER |
int |
int |
||
NUMBER |
unsigned int |
unsigned int |
||
NUMBER |
big_int (long long) |
big_int (long long |
||
NUMBER |
big_uint (unsigned long long) |
big_uint (unsigned long long) |
||
NUMBER |
float |
float |
||
NUMBER |
double |
double |
||
NUMBER |
OCI_Number * |
ocilib::number |
||
FLOAT |
double |
double |
||
BINARY FLOAT |
float |
float |
||
BINARY DOUBLE |
double |
float |
||
CHAR |
otext * |
ocilib::ostring |
||
VARCHAR |
otext * |
ocilib::ostring |
||
VARCHAR2 |
otext * |
ocilib::ostring |
||
NVARCHAR |
otext * |
ocilib::ostring |
||
NVARCHAR2 |
otext * |
ocilib::ostring |
||
ROWID |
otext * |
ocilib::ostring |
||
UROWID |
otext * |
ocilib::ostring |
||
VARRAW |
void * |
ocilib::Raw |
||
RAW |
void * |
ocilib::Raw |
||
LONG |
OCI_Long * |
OCI_CLONG |
ocilib::Clong |
|
LONG VARCHAR |
OCI_Long * |
OCI_CLONG |
ocilib::Clong |
|
LONG RAW |
OCI_Long * |
OCI_BLONG |
ocilib::Blong |
|
DATE |
OCI_Date * |
ocilib::Date |
||
TIMESTAMP |
OCI_Timestamp * |
OCI_TIMESTAMP |
ocilib::Timestamp |
NoTimeZone |
TIMESTAMP WITH TIME ZONE |
OCI_Timestamp * |
OCI_TIMESTAMP_TZ |
ocilib::Timestamp |
WithTimeZone |
TIMESTAMP WITH LOCAL TIME ZONE |
OCI_Timestamp * |
OCI_TIMESTAMP_LTZ |
ocilib::Timestamp |
WithLocalTimeZone |
INTERVAL YEAR TO MONTH |
OCI_Interval * |
OCI_INTERVAL_YM |
ocilib::Interval |
YearMonth |
INTERVAL DAY TO SECOND |
OCI_Interval * |
OCI_INTERVAL_DS |
ocilib::Interval |
DaySecond |
Character LOB |
OCI_Lob * |
OCI_CLOB |
ocilib::Clob |
LobCharacter |
National Character LOB |
OCI_Lob * |
OCI__NCLOB |
ocilib::NClob |
LobNationalCharacter |
Binary LOB |
OCI_Lob * |
OCI_BLOB |
ocilib::Blob |
LobBinary |
Binary FILE |
OCI_File * |
OCI_BFILE |
ocilib::File |
|
VARRAY |
OCI_Coll * |
OCI_COLL_VARRAY |
ocilib::Collection |
Varray |
NESTED TABLE |
OCI_Coll * |
OCI_COLL_NESTED_TABLE |
ocilib::Collection |
NestedTable |
PL/SQL INDEXED TABLE |
OCI_Coll * |
OCI_COLL_INDEXED_TABLE |
ocilib::Collection |
IndexedTable |
NAMED DATATYPE (TYPE, OBJECT) |
OCI_Object * |
ocilib::Object |
||
PL/SQL RECORD |
OCI_Object * |
ocilib::Object |
||
REF |
OCI_Ref * |
ocilib::Reference |
OCI_Initialize() 初始化OCILIB庫
OCI_Cleanup() 釋放OCILIB庫
OCI_ConnectionCreate() 建立Oracle數據庫鏈接,並返回Oracle數據庫鏈接句柄
OCI_ConnectionFree() 斷開Oracle數據庫鏈接,並釋放Oracle數據庫鏈接句柄
OCI_GetServerMajorVersion() 獲取Oracle數據庫服務器版本號
OCI_GetServerMinorVersion() 獲取Oracle數據庫服務器版本號
OCI_GetServerRevisionVersion() 獲取Oracle數據庫服務器版本號
OCI_GetVersionConnection() 獲取Oracle數據庫服務器版本號
OCI_StatementCreate() 建立Statement句柄,Statement句柄用於執行SQL語句
OCI_StatementFree() 釋放Statement句柄
OCI_Prepare() 準備SQL語句
OCI_BindString() 綁定SQL語句變量
OCI_Execute() 執行SQL語句
OCI_ExecuteStmt() 準備並執行SQL語句
OCI_GetResultset() 獲取結果集句柄
OCI_ReleaseResultsets() 釋放結果集句柄
OCI_FetchNext() 獲取結果集句柄的第一條或下一條數據
OCI_GetString() 獲取結果集句柄的當條數據的某個字段的字符串內容
OCI_GetInt() 獲取結果集句柄的當條數據的某個字段的整數內容
函數名稱 |
xxx |
頭文件 |
#include "..\LibOciLib\ocilib.h" |
庫文件 |
#pragma comment(lib, "xxx.lib") |
函數功能 |
函數主要功能說明。 |
函數聲明 |
類型 函數名 ( 類型 參數1, 類型 參數2, …… ); |
函數參數 |
參數1,[輸入|輸出|輸入&輸出]: 參數說明。 |
參數2,[輸入|輸出|輸入&輸出]: 參數說明。 |
|
…… |
|
返回值 |
返回值1:返回值說明。 返回值2:返回值說明。 …… |
錯誤碼 |
EXXXX:錯誤碼說明。 EXXXX:錯誤碼說明。 …… |
線程安全 |
是,需啓用多線程支持 |
原子操做 |
是,需啓用多線程支持 |
其餘說明 |
…… …… |
函數名稱 |
OCI_Initialize |
頭文件 |
#include "..\LibOciLib\ocilib.h" |
庫文件 |
#pragma comment(lib, "xxx.lib") |
函數功能 |
初始化OCILIB庫,必須初始化後才能調用OCILIB庫函數。 本函數只需調用一次,再次調用在函數內部自動忽略。 |
函數聲明 |
boolean OCI_Initialize ( POCI_ERROR err_handler, const mtext * lib_path, unsigned int mode ); |
函數參數 |
err_handler,[輸入]: 存放當執行數據庫操做出錯時的出錯回調函數的內存指針,函數聲明應爲void err_handler (OCI_Error * err),err參數爲錯誤碼句柄。 若是本參數爲NULL,表示不使用回調函數。 |
lib_path,[輸入]: 存放Oracle數據庫的Oci動態庫的上級路徑字符串的內存指針,例如:C:\instantclient_11_2。 若是本參數爲NULL,表示從ORACLE_HOME環境變量獲取Oracle數據庫的動態庫的路徑。 若是要使本參數生效,須要在編譯OCILIB庫時指定OCI_IMPORT_RUNTIME宏,不然本參數將自動忽略爲NULL。 |
|
mode,[輸入]: 存放模式標記,能夠爲(用'|'選一至多個): OCI_ENV_DEFAULT宏(0x0000): 默認模式,本標記強制設置。 OCI_ENV_THREADED宏(0x0001): 若是設置本標記,表示啓用多線程支持使用本庫。 若是不設置本標記,表示單線程使用本庫,不能多線程使用本庫,若是多線程使用會出現意外。 OCI_ENV_CONTEXT宏(0x0002): 若是設置本標記,表示啓用線程上下文錯誤處理,其實就是用線程上下文保存每一次數據庫操做的錯誤信息,以即可以調用OCI_GetLastError()函數來查看上次數據庫操做的錯誤信息。 若是不設置本標記,表示不保存數據庫操做的錯誤信息,調用OCI_GetLastError()函數將沒法查看到錯誤信息。 是否設置本標記不影響err_handler參數指定的出錯回調函數。 OCI_ENV_EVENTS(0x0004): enables events for subscription, HA Events, AQ notifications。 |
|
返回值 |
非0:成功。 0:失敗,加載Oracle數據庫的動態庫或OCILIB動態庫失敗。 |
錯誤碼 |
無 |
線程安全 |
否 |
原子操做 |
否 |
其餘說明 |
本函數會加載Oracle數據庫的動態庫到調用進程。 若是程序不會再調用OCILIB庫,能夠調用OCI_Cleanup()函數釋放OCILIB庫。 |
函數名稱 |
OCI_Cleanup |
頭文件 |
#include "..\LibOciLib\ocilib.h" |
庫文件 |
#pragma comment(lib, "xxx.lib") |
函數功能 |
釋放OCILIB庫,釋放後OCILIB庫函數將不能再調用。 釋放後,若是須要再次調用OCILIB庫,再次初始化OCILIB庫便可。 只需在初始化OCILIB庫後,再也不調用OCILIB庫時,調用本函數,未初始化OCILIB庫就調用本函數無心義。 |
函數聲明 |
boolean OCI_Cleanup ( void ); |
函數參數 |
無 |
返回值 |
非0:成功。 0:失敗。 |
錯誤碼 |
無 |
線程安全 |
否 |
原子操做 |
否 |
其餘說明 |
本函數會從調用進程卸載Oracle數據庫的動態庫。 |
函數名稱 |
OCI_GetLastError |
頭文件 |
#include "..\LibOciLib\ocilib.h" |
庫文件 |
#pragma comment(lib, "xxx.lib") |
函數功能 |
獲取最近一次調用OCILIB庫的函數的錯誤或者警告。 |
函數聲明 |
OCI_Error * OCI_GetLastError ( void ); |
函數參數 |
無 |
返回值 |
非NULL:錯誤句柄,表示最近一次調用OCILIB庫的函數出現了錯誤或者警告。 NULL:沒有錯誤或者警告,表示最近一次調用OCILIB庫的函數成功完成。 |
錯誤碼 |
EXXXX:錯誤碼說明。 EXXXX:錯誤碼說明。 …… |
線程安全 |
是,需啓用多線程支持 |
原子操做 |
是,需啓用多線程支持 |
其餘說明 |
|
函數名稱 |
OCI_ErrorGetString |
頭文件 |
#include "..\LibOciLib\ocilib.h" |
庫文件 |
#pragma comment(lib, "xxx.lib") |
函數功能 |
根據錯誤句柄,獲取錯誤或警告的提示信息字符串。 |
函數聲明 |
const otext * OCI_ErrorGetString ( OCI_Error * err ); |
函數參數 |
err,[輸入]: 存放錯誤句柄,不能爲NULL。 |
返回值 |
錯誤或警告的提示信息字符串的內存指針。 |
錯誤碼 |
無 |
線程安全 |
是,需啓用多線程支持 |
原子操做 |
是,需啓用多線程支持 |
其餘說明 |
提示信息字符串示例:ORA-12154: TNS: 沒法解析指定的鏈接標識符 |
函數名稱 |
OCI_ErrorGetType |
頭文件 |
#include "..\LibOciLib\ocilib.h" |
庫文件 |
#pragma comment(lib, "xxx.lib") |
函數功能 |
根據錯誤句柄,獲取錯誤類型,包括:Oracle錯誤、OCILIB錯誤、Warning警告。 |
函數聲明 |
unsigned int OCI_ErrorGetType( OCI_Error * err ) |
函數參數 |
err,[輸入]: 存放錯誤句柄,不能爲NULL。 |
返回值 |
OCI_ERR_ORACLE:Oracle錯誤。 OCI_ERR_OCILIB:OCILIB錯誤。 OCI_ERR_WARNING:Warning警告。 |
錯誤碼 |
EXXXX:錯誤碼說明。 EXXXX:錯誤碼說明。 …… |
線程安全 |
是,需啓用多線程支持 |
原子操做 |
是,需啓用多線程支持 |
其餘說明 |
|
函數名稱 |
OCI_ConnectionCreate |
頭文件 |
#include "..\LibOciLib\ocilib.h" |
庫文件 |
#pragma comment(lib, "xxx.lib") |
函數功能 |
建立一個Oracle數據庫的鏈接,並返回Oracle數據庫鏈接句柄。 |
函數聲明 |
OCI_Connection * OCI_ConnectionCreate ( const mtext * db, const mtext * user, const mtext * pwd, unsigned int mode ); |
函數參數 |
db,[輸入]: 存放鏈接Oracle數據庫的鏈接描述符字符串的內存指針,也能夠直接存放鏈接描述符的配置字符串的內存指針。 鏈接描述符的配置在oracle的安裝路徑下的network/admin/tnsnames.ora中。 鏈接描述符的配置字符串就是tnsnames.ora文件中鏈接描述符等於符號後面所填寫的內容。 |
user,[輸入]: 存放鏈接Oracle數據庫的用戶名字符串的內存指針。 |
|
pwd,[輸入]: 存放鏈接Oracle數據庫的用戶名對應的密碼字符串的內存指針。 |
|
mode,[輸入]: 存放鏈接Oracle數據庫的會話模式,能夠爲(選一至一個): OCI_SESSION_DEFAULT宏(0x0000): 以normal普通身份登錄Oracle數據庫。 OCI_SESSION_SYSDBA宏(0x0002): 以SYSDBA系統管理員身份登錄Oracle數據庫。 OCI_SESSION_SYSOPER宏(0x0004): 以SYSOPER系統操做員身份登錄Oracle數據庫。 OCI_SESSION_XA宏(0x0001): Oracle XA support OCILIB supports Oracle XA connectivity. In order to get a connection using the XA interface : Pass to the parameter 'db' the value of the 'DB' parameter of the given XA connection string pased to the Transaction Processing Monitor (TPM) Pass NULL to the 'user' and 'pwd' parameters Pass the value OCI_SESSION_XA to parameter 'mode'
Oracle XA Connection String The XA connection string used in a transaction monitor to connect to Oracle must be compatible with OCILIB : the XA parameter 'Objects' MUST be set to 'true' If OCI_ENV_THREADED is passed to OCI_Initialize(), the XA parameter 'Threads' must be set to 'true', otherwise to 'false' If OCI_ENV_EVENTS is passed to OCI_Initialize(), the XA parameter 'Events' must be set to 'true', otherwise to 'false' As Oracle does not support Unicode UTF16 characterset through the XA interface, Only OCI_CHARSET_ANSI builds of OCILIB can be used You still can use UTF8 if the NLS_LANG environment variable is set with a valid UTF8 NLS value DO NOT USE OCI_CHARSET_MIXED or OCI_CHARSET_WIDE OCILIB builds with XA connections |
|
返回值 |
非NULL:鏈接成功,Oracle數據庫鏈接句柄。 NULL:鏈接失敗,經過err_handler()出錯回調函數或調用OCI_GetLastError()函數查看錯誤碼。 |
錯誤碼 |
EXXXX:錯誤碼說明。 EXXXX:錯誤碼說明。 …… |
線程安全 |
是,需啓用多線程支持 |
原子操做 |
是,需啓用多線程支持 |
其餘說明 |
若是要斷開鏈接,能夠調用OCI_ConnectionFree()函數。 |
函數名稱 |
OCI_ConnectionFree |
頭文件 |
#include "..\LibOciLib\ocilib.h" |
庫文件 |
#pragma comment(lib, "xxx.lib") |
函數功能 |
斷開一個Oracle數據庫的鏈接。 |
函數聲明 |
boolean OCI_ConnectionFree ( OCI_Connection * con ) |
函數參數 |
con,[輸入]: 存放調用OCI_ConnectionCreate()函數返回的Oracle數據庫鏈接句柄,不能爲NULL。 本參數不能爲錯誤的Oracle數據庫鏈接句柄,不然會內存讀寫錯誤。 |
返回值 |
非0:斷開成功。 0:斷開失敗,經過err_handler()出錯回調函數或調用OCI_GetLastError()函數查看錯誤碼。 |
錯誤碼 |
ORA-0:指定的Oracle數據庫鏈接句柄爲NULL。 |
線程安全 |
是,需啓用多線程支持 |
原子操做 |
是 |
其餘說明 |
Oracle數據庫鏈接句柄在斷開後就不能再使用了,再用就會報錯誤的Oracle數據庫鏈接句柄。 |
函數名稱 |
OCI_StatementCreate |
頭文件 |
#include "..\LibOciLib\ocilib.h" |
庫文件 |
#pragma comment(lib, "xxx.lib") |
函數功能 |
根據Oracle數據庫鏈接句柄,建立Statement對象句柄。 |
函數聲明 |
OCI_Statement * OCI_StatementCreate ( OCI_Connection * con ); |
函數參數 |
con,[輸入]: 存放Oracle數據庫鏈接句柄。 |
返回值 |
非NULL:成功,Statement對象句柄。 NULL:失敗,經過err_handler()出錯回調函數或調用OCI_GetLastError()函數查看錯誤碼。 |
錯誤碼 |
EXXXX:錯誤碼說明。 EXXXX:錯誤碼說明。 …… |
線程安全 |
是,需啓用多線程支持 |
原子操做 |
是 |
其餘說明 |
建立完Statement對象句柄,就能夠開始準備、解析並執行SQL語句或PL/SQL代碼塊了。 執行一個SQL語句或PL/SQL代碼塊須要通過三個步驟:準備、解析、執行。具體以下: 準備就是將SQL語句或PL/SQL代碼塊存放到Statement對象句柄。 解析就是讓Oracle數據庫服務器將準備好的SQL語句或PL/SQL代碼塊進行分析是否能夠被執行。 執行就是將已經解析經過後的SQL語句或PL/SQL代碼塊進行執行。 一個Statement對象句柄在通過準備、解析、執行步驟以後,若是還須要再執行任何SQL語句或PL/SQL代碼塊,必需要從新進行準備、解析、執行步驟,不能只准備一次,而後重複執行,不然會出現意外錯誤。
當Statement對象句柄再也不使用時,應調用OCI_StatementFree()函數釋放Statement對象句柄。 |
函數名稱 |
OCI_StatementFree |
頭文件 |
#include "..\LibOciLib\ocilib.h" |
庫文件 |
#pragma comment(lib, "xxx.lib") |
函數功能 |
釋放Statement對象句柄。 |
函數聲明 |
OCI_EXPORT boolean OCI_StatementFree ( OCI_Statement * stmt ); |
函數參數 |
stmt,[輸入]: 存放Statement對象句柄。 |
返回值 |
非0:成功。 0:失敗,經過err_handler()出錯回調函數或調用OCI_GetLastError()函數查看錯誤碼。 |
錯誤碼 |
EXXXX:錯誤碼說明。 EXXXX:錯誤碼說明。 …… |
線程安全 |
是,需啓用多線程支持 |
原子操做 |
是 |
其餘說明 |
|
函數名稱 |
OCI_Prepare |
頭文件 |
#include "..\LibOciLib\ocilib.h" |
庫文件 |
#pragma comment(lib, "xxx.lib") |
函數功能 |
向指定的Statement對象句柄裏,準備一個SQL語句或PL/SQL代碼塊,該SQL語句或PL/SQL代碼塊不會被解析和執行。 |
函數聲明 |
boolean OCI_Prepare ( OCI_Statement * stmt, const otext * sql ) |
函數參數 |
stmt,[輸入]: 存放Statement對象句柄。 |
sql,[輸入]: 存放SQL語句或PL/SQL代碼塊字符串的內存指針,不能爲NULL。 若是是SQL語句,不能在末尾添加';'分號,例如:select * from dual。 若是是PL/SQL代碼塊,必需要在末尾添加';'分號,例如:begin dbms_output.new_line(); end;。 |
|
返回值 |
非0:成功,或有警告,經過err_handler()出錯回調函數或調用OCI_GetLastError()函數查看錯誤碼。 0:失敗,經過err_handler()出錯回調函數或調用OCI_GetLastError()函數查看錯誤碼。 |
錯誤碼 |
EXXXX:錯誤碼說明。 EXXXX:錯誤碼說明。 …… |
線程安全 |
是,需啓用多線程支持 |
原子操做 |
是,需啓用多線程支持 |
其餘說明 |
通常在調用本函數後,會再對SQL語句或PL/SQL代碼塊中的變量進行綁定,而後再調用OCI_Execute()函數解析並執行。若是不須要綁定變量的,通常會調用OCI_ExecuteStmt()函數來一次性完成準備、解析和執行。 若是SQL語句或PL/SQL代碼塊中有變量須要綁定,綁定變量的格式都是冒號後面加變量名,例如:insert into table values (:var1, :var2)。 |
函數名稱 |
OCI_Execute |
頭文件 |
#include "..\LibOciLib\ocilib.h" |
庫文件 |
#pragma comment(lib, "xxx.lib") |
函數功能 |
根據指定的Statement對象句柄,解析並執行一個已經準備好的並綁定了變量的SQL語句或PL/SQL代碼塊。 |
函數聲明 |
boolean OCI_Execute ( OCI_Statement * stmt ) |
函數參數 |
stmt,[輸入]: 存放Statement對象句柄。 |
返回值 |
非0:成功,或有警告,經過err_handler()出錯回調函數或調用OCI_GetLastError()函數查看錯誤碼。 0:失敗,經過err_handler()出錯回調函數或調用OCI_GetLastError()函數查看錯誤碼。 |
錯誤碼 |
EXXXX:錯誤碼說明。 EXXXX:錯誤碼說明。 …… |
線程安全 |
是,需啓用多線程支持 |
原子操做 |
是,需啓用多線程支持 |
其餘說明 |
|
函數名稱 |
OCI_ExecuteStmt |
頭文件 |
#include "..\LibOciLib\ocilib.h" |
庫文件 |
#pragma comment(lib, "xxx.lib") |
函數功能 |
向指定的Statement對象句柄裏,準備、解析並執行一個SQL語句或PL/SQL代碼塊。 |
函數聲明 |
OCI_EXPORT boolean OCI_ExecuteStmt ( OCI_Statement * stmt, const otext * sql ); |
函數參數 |
stmt,[輸入]: 存放Statement對象句柄。 |
sql,[輸入]: 存放SQL語句或PL/SQL代碼塊字符串的內存指針,不能爲NULL。 若是是SQL語句,不能在末尾添加';'分號,例如:select * from dual。 若是是PL/SQL代碼塊,必需要在末尾添加';'分號,例如:begin dbms_output.new_line(); end;。 |
|
返回值 |
非0:成功,或有警告,經過err_handler()出錯回調函數或調用OCI_GetLastError()函數查看錯誤碼。 0:失敗,經過err_handler()出錯回調函數或調用OCI_GetLastError()函數查看錯誤碼。 |
錯誤碼 |
EXXXX:錯誤碼說明。 EXXXX:錯誤碼說明。 …… |
線程安全 |
是,需啓用多線程支持 |
原子操做 |
是 |
其餘說明 |
若是成功執行了Select查詢語句,就能夠調用OCI_GetResultset()函數來獲取結果集。 |
函數名稱 |
OCI_Parse |
頭文件 |
#include "..\LibOciLib\ocilib.h" |
庫文件 |
#pragma comment(lib, "xxx.lib") |
函數功能 |
向指定的Statement對象句柄裏,準備並解析一個SQL語句或PL/SQL代碼塊,該SQL語句或PL/SQL代碼塊不會被執行。 |
函數聲明 |
boolean OCI_Parse ( OCI_Statement * stmt, const otext * sql ) |
函數參數 |
stmt,[輸入]: 存放Statement對象句柄。 |
sql,[輸入]: 存放SQL語句或PL/SQL代碼塊字符串的內存指針,不能爲NULL。 若是是SQL語句,不能在末尾添加';'分號,例如:select * from dual。 若是是PL/SQL代碼塊,必需要在末尾添加';'分號,例如:begin dbms_output.new_line(); end;。 |
|
返回值 |
非0:成功,或有警告,經過err_handler()出錯回調函數或調用OCI_GetLastError()函數查看錯誤碼。 0:失敗,經過err_handler()出錯回調函數或調用OCI_GetLastError()函數查看錯誤碼。 |
錯誤碼 |
EXXXX:錯誤碼說明。 EXXXX:錯誤碼說明。 …… |
線程安全 |
是,需啓用多線程支持 |
原子操做 |
是,需啓用多線程支持 |
其餘說明 |
|
函數名稱 |
OCI_GetFetchSize |
頭文件 |
#include "..\LibOciLib\ocilib.h" |
庫文件 |
#pragma comment(lib, "xxx.lib") |
函數功能 |
獲取指定的Statement對象句柄在每次抽取數據時從Oracle數據庫服務器預抽取多少行的數據。 |
函數聲明 |
unsigned int OCI_GetFetchSize ( OCI_Statement * stmt ) |
函數參數 |
stmt,[輸入]: 存放Statement對象句柄。 |
返回值 |
預抽取多少行的數據,默認值爲OCI_FETCH_SIZE宏。 |
錯誤碼 |
EXXXX:錯誤碼說明。 EXXXX:錯誤碼說明。 …… |
線程安全 |
是,需啓用多線程支持 |
原子操做 |
是,需啓用多線程支持 |
其餘說明 |
預抽取就是先從Oracle數據庫服務器一次性抽取多行數據存放到緩存中,而後再從該緩存中依次抽取數據出來,當緩存中的數據抽取完畢時,又會從Oracle數據庫服務器一次性抽取多行數據存放到緩存中,直到所有抽取完畢,這樣能夠加快抽取速度,減小Oracle數據庫服務器的壓力。 |
函數名稱 |
OCI_SetFetchSize |
頭文件 |
#include "..\LibOciLib\ocilib.h" |
庫文件 |
#pragma comment(lib, "xxx.lib") |
函數功能 |
修改指定的Statement對象句柄在每次抽取數據時從Oracle數據庫服務器預抽取多少行的數據。 |
函數聲明 |
boolean OCI_SetFetchSize ( OCI_Statement * stmt, unsigned int size ) |
函數參數 |
stmt,[輸入]: 存放Statement對象句柄。 |
size,[輸入]: 存放預抽取多少行的數據的值。 |
|
返回值 |
非0:成功,或有警告,經過err_handler()出錯回調函數或調用OCI_GetLastError()函數查看錯誤碼。 0:失敗,經過err_handler()出錯回調函數或調用OCI_GetLastError()函數查看錯誤碼。 |
錯誤碼 |
EXXXX:錯誤碼說明。 EXXXX:錯誤碼說明。 …… |
線程安全 |
是,需啓用多線程支持 |
原子操做 |
是,需啓用多線程支持 |
其餘說明 |
本函數必需要在調用OCI_GetResultset()函數以前調用,不然將無效。 調大預抽取行數能夠加快抽取速度,越打越快,通常爲10000至50000能達到最快抽取速度。 |
函數名稱 |
OCI_GetResultset |
頭文件 |
#include "..\LibOciLib\ocilib.h" |
庫文件 |
#pragma comment(lib, "xxx.lib") |
函數功能 |
獲取根據Statement對象句柄執行Select查詢語句後的結果集句柄。 |
函數聲明 |
OCI_Resultset * OCI_GetResultset ( OCI_Statement * stmt ); |
函數參數 |
stmt,[輸入]: 存放Statement對象句柄。 |
返回值 |
非0:成功,結果集句柄。 0:失敗,經過err_handler()出錯回調函數或調用OCI_GetLastError()函數查看錯誤碼。 |
錯誤碼 |
EXXXX:錯誤碼說明。 EXXXX:錯誤碼說明。 …… |
線程安全 |
是,需啓用多線程支持 |
原子操做 |
是 |
其餘說明 |
當結果集句柄再也不使用時,應調用OCI_ReleaseResultsets()函數釋放結果集句柄。 |
函數名稱 |
OCI_ReleaseResultsets |
頭文件 |
#include "..\LibOciLib\ocilib.h" |
庫文件 |
#pragma comment(lib, "xxx.lib") |
函數功能 |
釋放結果集句柄。 |
函數聲明 |
boolean OCI_ReleaseResultsets ( OCI_Statement * stmt ); |
函數參數 |
stmt,[輸入]: 存放Statement對象句柄。 |
返回值 |
非0:成功。 0:失敗,經過err_handler()出錯回調函數或調用OCI_GetLastError()函數查看錯誤碼。 |
錯誤碼 |
EXXXX:錯誤碼說明。 EXXXX:錯誤碼說明。 …… |
線程安全 |
是,需啓用多線程支持 |
原子操做 |
是 |
其餘說明 |
|
函數名稱 |
OCI_GetColumnCount |
頭文件 |
#include "..\LibOciLib\ocilib.h" |
庫文件 |
#pragma comment(lib, "xxx.lib") |
函數功能 |
獲取結果集句柄的字段個數。 |
函數聲明 |
unsigned int OCI_GetColumnCount ( OCI_Resultset * rs ); |
函數參數 |
rs,[輸入]: 存放結果集句柄。 |
返回值 |
字段個數。 |
錯誤碼 |
無 |
線程安全 |
是,需啓用多線程支持 |
原子操做 |
是 |
其餘說明 |
|
函數名稱 |
OCI_GetColumn |
頭文件 |
#include "..\LibOciLib\ocilib.h" |
庫文件 |
#pragma comment(lib, "xxx.lib") |
函數功能 |
獲取結果集句柄的指定索引的字段句柄。 |
函數聲明 |
OCI_Column * OCI_GetColumn ( OCI_Resultset * rs, unsigned int index ); |
函數參數 |
rs,[輸入]: 存放結果集句柄。 |
index,[輸入]: 存放字段索引的值,從1開始。 |
|
返回值 |
非NULL:成功,返回值就是字段句柄。 NULL:失敗,字段索引超出範圍或發生錯誤,沒法查看錯誤碼。 |
錯誤碼 |
EXXXX:錯誤碼說明。 EXXXX:錯誤碼說明。 …… |
線程安全 |
是,需啓用多線程支持 |
原子操做 |
是 |
其餘說明 |
|
函數名稱 |
OCI_ColumnGetName |
頭文件 |
#include <xxx.h> #include <xxx.h> |
庫文件 |
#pragma comment(lib, "xxx.lib") |
函數功能 |
獲取字段句柄的名稱字符串。 |
函數聲明 |
const otext * OCI_ColumnGetName ( OCI_Column * col ); |
函數參數 |
col,[輸入]: 存放字段句柄。 |
返回值 |
名稱字符串的內存指針。 |
錯誤碼 |
EXXXX:錯誤碼說明。 EXXXX:錯誤碼說明。 …… |
線程安全 |
是,需啓用多線程支持 |
原子操做 |
是 |
其餘說明 |
|
函數名稱 |
OCI_ColumnGetSQLType |
頭文件 |
#include "..\LibOciLib\ocilib.h" |
庫文件 |
#pragma comment(lib, "xxx.lib") |
函數功能 |
獲取字段句柄的類型字符串,只有類型,沒有精度。 例如:VARCHAR2。 |
函數聲明 |
const otext * OCI_ColumnGetSQLType ( OCI_Column * col ) |
函數參數 |
col,[輸入]: 存放字段句柄。 |
返回值 |
類型字符串的內存指針。 |
錯誤碼 |
EXXXX:錯誤碼說明。 EXXXX:錯誤碼說明。 …… |
線程安全 |
是,需啓用多線程支持 |
原子操做 |
是 |
其餘說明 |
|
函數名稱 |
OCI_ColumnGetFullSQLType |
頭文件 |
#include "..\LibOciLib\ocilib.h" |
庫文件 |
#pragma comment(lib, "xxx.lib") |
函數功能 |
獲取字段句柄的完整類型字符串,包括類型和精度。 注意:VARCHAR2類型的字段會寫成VARCHAR,可是不影響,由於Oracle中VARCHAR和VARCHAR2是同一種類型。 例如:VARCHAR(30)。 |
函數聲明 |
unsigned int OCI_ColumnGetFullSQLType ( OCI_Column * col, otext * buffer, unsigned int len ); |
函數參數 |
col,[輸入]: 存放字段句柄。 |
buffer,[輸入]: 存放用於存放字段完整類型字符串的內存指針。 |
|
len,[輸入]: 存放用於存放字段完整類型字符串的內存大小。 |
|
返回值 |
向用於存放字段完整類型字符串的內存寫入了多少長度的字符,單位字節,不包括'\0'結束符。 |
錯誤碼 |
EXXXX:錯誤碼說明。 EXXXX:錯誤碼說明。 …… |
線程安全 |
是,需啓用多線程支持 |
原子操做 |
是 |
其餘說明 |
|
函數名稱 |
OCI_ColumnGetSize |
頭文件 |
#include "..\LibOciLib\ocilib.h" |
庫文件 |
#pragma comment(lib, "xxx.lib") |
函數功能 |
獲取字段句柄的大小,不一樣數據類型單位不同。
VARCHAR2類型:單位爲字符個數,和精度一致。 NUMBER類型:單位爲字節,一般都是22個字節。 DATE類型:單位爲字節,一般都是7個字節。 TIMESTAMP類型:單位爲字節,一般都是11個字節,精度爲0是7個字節。 TIMESTAMP WITH LOCAL TIME ZONE類型:單位爲字節,一般都是11個字節,精度爲0是7個字節。 TIMESTAMP WITH TIME ZONE類型:單位爲字節,一般都是13個字節。 |
函數聲明 |
unsigned int OCI_ColumnGetSize ( OCI_Column * col ); |
函數參數 |
col,[輸入]: 存放字段句柄。 |
返回值 |
返回值1:返回值說明。 返回值2:返回值說明。 …… |
錯誤碼 |
EXXXX:錯誤碼說明。 EXXXX:錯誤碼說明。 …… |
線程安全 |
是,需啓用多線程支持 |
原子操做 |
是 |
其餘說明 |
|
函數名稱 |
OCI_ColumnGetNullable |
頭文件 |
#include "..\LibOciLib\ocilib.h" |
庫文件 |
#pragma comment(lib, "xxx.lib") |
函數功能 |
獲取字段句柄的值能否爲NULL。 |
函數聲明 |
boolean OCI_ColumnGetNullable ( OCI_Column * col ); |
函數參數 |
col,[輸入]: 存放字段句柄。 |
返回值 |
非0:能夠爲NULL。 0:不能夠爲NULL。 |
錯誤碼 |
EXXXX:錯誤碼說明。 EXXXX:錯誤碼說明。 …… |
線程安全 |
是,需啓用多線程支持 |
原子操做 |
是 |
其餘說明 |