LibOciLib使用说明

整理者:赤勇玄心行天道

QQ:280604597

Email:280604597@qq.com

大家有什么不明白的地方,或者想要详细了解的地方可以联系我,我会认真回复的!

你可以随意转载,无需注明出处!

写文档实属不易,我希望大家能捐助我,继续支持我的工作,我会继续努力帮助大家,金额随意,1块也行,感谢!

支付宝:280604597@qq.com

QQ红包

OCILIB的QQ群:553666676

1、  复制解决方案根目录下的“LibOciLib”文件夹到调用程序的解决方案根目录下。

2、  调用程序需添加代码:

#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

3、  编译调用程序的项目。



1   简介

官方网站:http://vrogier.github.io/ocilib/

2   字段数据类型对应规则

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

 



3   常用函数

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() 获取结果集句柄的当条数据的某个字段的整数内容

3.1 函数模板(未完成)

函数名称

xxx

头文件

#include "..\LibOciLib\ocilib.h"

库文件

#pragma comment(lib, "xxx.lib")

函数功能

函数主要功能说明。

函数声明

类型 函数名 (

类型 参数1,

类型 参数2,

……

);

函数参数

参数1,[输入|输出|输入&输出]:

参数说明。

参数2,[输入|输出|输入&输出]:

参数说明。

……

返回值

返回值1:返回值说明。

返回值2:返回值说明。

……

错误码

EXXXX:错误码说明。

EXXXX:错误码说明。

……

线程安全

是,需启用多线程支持

原子操作

是,需启用多线程支持

其他说明

……

……

3.2 初始化

3.2.1 OCI_Initialize

函数名称

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库。

3.2.2 OCI_Cleanup

函数名称

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数据库的动态库。

3.3 错误处理

3.3.1 OCI_GetLastError(未完成)

函数名称

OCI_GetLastError

头文件

#include "..\LibOciLib\ocilib.h"

库文件

#pragma comment(lib, "xxx.lib")

函数功能

获取最近一次调用OCILIB库的函数的错误或者警告。

函数声明

OCI_Error * OCI_GetLastError (

void

);

函数参数

返回值

非NULL:错误句柄,表示最近一次调用OCILIB库的函数出现了错误或者警告。

NULL:没有错误或者警告,表示最近一次调用OCILIB库的函数成功完成。

错误码

EXXXX:错误码说明。

EXXXX:错误码说明。

……

线程安全

是,需启用多线程支持

原子操作

是,需启用多线程支持

其他说明

3.3.2 OCI_ErrorGetString

函数名称

OCI_ErrorGetString

头文件

#include "..\LibOciLib\ocilib.h"

库文件

#pragma comment(lib, "xxx.lib")

函数功能

根据错误句柄,获取错误或警告的提示信息字符串。

函数声明

const otext * OCI_ErrorGetString (

OCI_Error *
err

);

函数参数

err,[输入]:

存放错误句柄,不能为NULL。

返回值

错误或警告的提示信息字符串的内存指针。

错误码

线程安全

是,需启用多线程支持

原子操作

是,需启用多线程支持

其他说明

提示信息字符串示例:ORA-12154: TNS: 无法解析指定的连接标识符

3.3.3 OCI_ErrorGetType(未完成)

函数名称

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:错误码说明。

……

线程安全

是,需启用多线程支持

原子操作

是,需启用多线程支持

其他说明

3.4 连接数据库

3.4.1 OCI_ConnectionCreate(未完成)

函数名称

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()函数。

3.4.2 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数据库连接句柄。

3.5 执行Statement

3.5.1 OCI_StatementCreate(未完成)

函数名称

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对象句柄。

3.5.2 OCI_StatementFree(未完成)

函数名称

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:错误码说明。

……

线程安全

是,需启用多线程支持

原子操作

其他说明

3.5.3 OCI_Prepare(未完成)

函数名称

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)。

3.5.4 OCI_Execute(未完成)

函数名称

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:错误码说明。

……

线程安全

是,需启用多线程支持

原子操作

是,需启用多线程支持

其他说明

3.5.5 OCI_ExecuteStmt(未完成)

函数名称

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()函数来获取结果集。

3.5.6 OCI_Parse(未完成)

函数名称

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:错误码说明。

……

线程安全

是,需启用多线程支持

原子操作

是,需启用多线程支持

其他说明

3.6 控制Statement

3.6.1 OCI_GetFetchSize(未完成)

函数名称

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数据库服务器的压力。

3.6.2 OCI_SetFetchSize(未完成)

函数名称

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能达到最快抽取速度。

3.7 抽取结果集数据

3.7.1 OCI_GetResultset(未完成)

函数名称

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()函数释放结果集句柄。

3.7.2 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:错误码说明。

……

线程安全

是,需启用多线程支持

原子操作

其他说明

3.7.3 OCI_GetColumnCount(未完成)

函数名称

OCI_GetColumnCount

头文件

#include "..\LibOciLib\ocilib.h"

库文件

#pragma comment(lib, "xxx.lib")

函数功能

获取结果集句柄的字段个数。

函数声明

unsigned int OCI_GetColumnCount (

OCI_Resultset
* rs

);

函数参数

rs,[输入]:

存放结果集句柄。

返回值

字段个数。

错误码

线程安全

是,需启用多线程支持

原子操作

其他说明

3.7.4 OCI_GetColumn(未完成)

函数名称

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:错误码说明。

……

线程安全

是,需启用多线程支持

原子操作

其他说明

3.7.5 OCI_ColumnGetName(未完成)

函数名称

OCI_ColumnGetName

头文件

#include <xxx.h>

#include <xxx.h>

库文件

#pragma comment(lib, "xxx.lib")

函数功能

获取字段句柄的名称字符串。

函数声明

const otext * OCI_ColumnGetName (

OCI_Column
* col

);

函数参数

col,[输入]:

存放字段句柄。

返回值

名称字符串的内存指针。

错误码

EXXXX:错误码说明。

EXXXX:错误码说明。

……

线程安全

是,需启用多线程支持

原子操作

其他说明

3.7.6 OCI_ColumnGetSQLType(未完成)

函数名称

OCI_ColumnGetSQLType

头文件

#include "..\LibOciLib\ocilib.h"

库文件

#pragma comment(lib, "xxx.lib")

函数功能

获取字段句柄的类型字符串,只有类型,没有精度。

例如:VARCHAR2。

函数声明

const otext * OCI_ColumnGetSQLType (

OCI_Column
* col

)

函数参数

col,[输入]:

存放字段句柄。

返回值

类型字符串的内存指针。

错误码

EXXXX:错误码说明。

EXXXX:错误码说明。

……

线程安全

是,需启用多线程支持

原子操作

其他说明

3.7.7 OCI_ColumnGetFullSQLType(未完成)

函数名称

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:错误码说明。

……

线程安全

是,需启用多线程支持

原子操作

其他说明

3.7.8 OCI_ColumnGetSize(未完成)

函数名称

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:错误码说明。

……

线程安全

是,需启用多线程支持

原子操作

其他说明

3.7.9 OCI_ColumnGetNullable(未完成)

函数名称

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:错误码说明。

……

线程安全

是,需启用多线程支持

原子操作

其他说明

LibOciLib使用说明(2017-1-26更新)的更多相关文章

  1. 团队作业4——第一次项目冲刺(Alpha版本)2017.4.26

    2017.04.26 天气热. 时间:上午 9:35 ---10:10分 地点:陆大304实验室 会议内容:今天将昨天的的一些问题进行了讨论,以及针对助教提出的问题进行了分析,是因为我们昨天经过讨论后 ...

  2. Xamarin 2017.11.9更新

     Xamarin 2017.11.9更新 本次更新主要针对Xamarin.iOS,适配了iOS 11.1和Xcode 9.1.Visual Studio 2017升级到15.4.3获得新功能.Visu ...

  3. Xamarin 2017.11.1更新

     Xamarin 2017.11.1更新 本次更新主要解决了一些bug.Visual Studio 2017升级到15.4.2获得新功能.Visual Studio 2015需要工具-选项-Xamar ...

  4. Xamarin 2017.10.9更新

     Xamarin 2017.10.9更新 本次更新主要解决了一些bug.Visual Studio 2017升级到15.4获得新功能.Visual Studio 2015需要工具-选项-Xamarin ...

  5. Xamarin 2017.9.19更新

     Xamarin 2017.9.19更新   本次更新是添加Xamarin.iOS对iOS 11和Xcode 9的支持.Visual Studio 2017升级到15.3.5获得更新功能.Visual ...

  6. jetbrains idea/webstorm等(注册,激活,破解码,一起支持正版,最新可用)(2017.3.16更新)【转】

    选择 License server (2017.3.16更新) http://idea.imsxm.com/ 详细请参考:  http://www.cnblogs.com/ys-wuhan/p/584 ...

  7. wdcp 使用说明总结(持续更新中。。。)

    wdcp 使用说明总结(持续更新中...) 1.移动文件时,如果是上一层,直接填写../即可

  8. VS Code 调教日记(2022.6.26更新)

    VS Code 调教日记(2022.6.26更新) 基于msys2的MinGW-w64 GCC的环境配置 下载并安装msys2 到路径...msys2安装路径...\msys64\etc\pacman ...

  9. iOS UIWebView 加载进度条的使用-WKWebView的使用,更新2017.6.26

    1.由于项目中加载网络插件,直接使用了webview加载.使用了三方NJKWebViewProgress进度条的使用,近期在测试时发现,网络缓慢时出现白屏,有卡顿现象. 于是采用了WKWebView进 ...

  10. iOS 实现UIImageView 的不停的旋转(更新:2017.7.26)

    1.先创建一个UIImageView. - (void)createImageView { UIImageView *imageView = [[UIImageView alloc] initWith ...

随机推荐

  1. 如何将mp4文件解复用并且解码为单独的.yuv图像序列以及.pcm音频采样数据?

    一.初始化解复用器 在音视频的解复用的过程中,有一个非常重要的结构体AVFormatContext,即输入文件的上下文句柄结构,代表当前打开的输入文件或流.我们可以将输入文件的路径以及AVFormat ...

  2. 为什么 kubelet 不使用容器化部署?

    每日一问系列 为什么 kubelet 不使用容器化部署? 通过脚本(shell/ansible 等)在节点上部署 kubelet 服务时,涉及 kubelet 进程 service 启动配置.证书等, ...

  3. .Net8的AOT引导程序BootStrap

    前言 .Net8的本地预编机器码AOT,它几乎进行了100%的自举.微软为了摆脱C++的钳制,做了很多努力.也就是代码几乎是用C#重写,包括了虚拟机,GC,内存模型等等.而需要C++做的,也就仅仅是引 ...

  4. linux内核Makefile中的变量build--- 过渡篇(五)

    一. kbuild系统主要涉及的几个文件 文件名 作用 Makefile 内核源代码顶层目录的Makefile文件 scripts/Makefile.build 通常在进行递归make时会用到的Mak ...

  5. 【译】Visual Studio 2022 中的 Web API 开发

    在 Visual Studio 2022 中,Web 开发人员的主要场景之一是使用 ASP.NET Core 创建 Web API.在 Visual Studio 2022 17.6 的最新预览版中, ...

  6. NativeBuferring&mdash;&mdash;一种零分配的数据类型[上篇]

    之前一个项目涉及到针对海量(千万级)实时变化数据的计算,由于对性能要求非常高,我们不得不将参与计算的数据存放到内存中,并通过检测数据存储的变化实时更新内存的数据.存量的数据几乎耗用了上百G的内存,再加 ...

  7. 原来TypeScript中的接口和泛型这么好理解

    "接口"和"泛型"是 TypeScript 相比于 JavaScript 新增的内容,都用于定义数据类型 前面两篇文章总结了TypeScript中的 类型注解. ...

  8. 从redis未授权访问到获取服务器权限

    从redis未授权访问到获取服务器权限 好久没写博客了,博客园快荒芜了.赶紧再写一篇,算是一个关于自己学习的简要的记录把. 这里是关于redis未授权访问漏洞的一篇漏洞利用: 首先是redis,靶场搭 ...

  9. Web开发框架 WebBuilder 9 发布

    WebBuilder 是一款强大,全面和高效的Web开发框架 .基于浏览器的集成开发环境,智能化的设计,能轻松完成常规桌面应用和面向手机等的移动应用开发.高效.稳定和可扩展的特点,适合复杂企业级应用的 ...

  10. 4.2 C++ Boost 内存池管理库

    Boost 库是一个由C/C++语言的开发者创建并更新维护的开源类库,其提供了许多功能强大的程序库和工具,用于开发高质量.可移植.高效的C应用程序.Boost库可以作为标准C库的后备,通常被称为准标准 ...