环境初始化接口
OCIInitialize
功能描述
初始化OCI进程上下文环境。
功能说明
此调用用于初始化OCI进程上下文环境,所有其他OCI调用必须要在环境上下文初始化的基础上调用,此函数使应用程序能够通过回调定义自己的内存管理函数。如果应用程序定义了此类函数(即内存分配、内存重新分配、内存释放函数),则应使用此函数中的回调参数注册它们。这些内存回调是可选的。如果应用程序在此函数中传递内存回调的值,则使用默认的进程内存分配机制。
接口信息
OCIInitialize语法如下:
sword
OCIInitialize (
ub4 mode,
const void *ctxp,
void *(*malocfp)(void *ctxp, size_t size),
void *(*ralocfp)(void *ctxp, void *memptr, size_t newsize),
void (*mfreefp)(void *ctxp, void *memptr)
);
参数解释如下:
- mode (IN):指定初始化模式类型。
- OCI_DEFAULT:默认模式。
- OCI_THREADED:线程环境模式。在此模式下,不向用户公开的内部数据结构受到保护,防止多个线程并发访问(暂不支持)。
- OCI_OBJECT:使用对象特性(暂不支持)。
- OCI_EVENTS:使用发布者-订阅者通知模式(暂不支持)。
- ctxp (IN):用户自定义内存回调函数的上下文环境。
- malocfp (IN): 用户自定义的内存分配函数。如果mode为OCI_THREADED ,则此内存分配函数必须是线程安全的。(暂不支持)。
- ctxp (IN/OUT):内存分配功能的上下文指针。
- size (IN):分配的内存大小。
- ralocfp (IN):用户自定义的内存重新分配函数。如果mode为OCI_THREADED ,则此内存分配函数必须是线程安全的。(暂不支持)
- ctxp(IN):内存重新分配功能的上下文指针。
- memptr(IN/OUT):重新分配功能最终分配的内存块指针。
- newsize(IN):重新分配的内存大小。
- mfreefp (IN):用户自定义的内存释放函数。如果mode为OCI_THREADED ,则此内存函数必须是线程安全的。(暂不支持)
- ctxp (IN/OUT):内存释放函数的上下文指针。
- memptr (IN/OUT):指向要释放的内存的指针。
OCIEnvInit
功能描述
分配和初始化 OCI 环境句柄。
功能说明
此调用分配并初始化 OCI 环境句柄。如果返回OCI_ERROR或OCI_SUCCESS_WITH_INFO,则可以使用环境句柄获取特定于 Oracle 的错误和诊断信息。此调用在本地处理,无需服务器往返,可以使用OCIHandleFree()释放环境句柄。
接口信息
函数/过程
OCIEnvInit语法如下:
sword OCIEnvInit (
OCIEnv **envhpp,
ub4 mode,
size_t xtramemsz,
void **usrmempp
);
参数解释如下:
- envhpp (OUT):用来保存创建完成的OCIEnv句柄。
- mode (IN):指定初始化模式类型。
- OCI_DEFAULT:在该模式下,句柄是互斥的,为默认模式。
- OCI_ENV_NO_UCB:该模式用于禁止在环境初始化时调用动态回调函数,默认行为是允许进行此类调用。(暂不支持)
- xtramemsz (IN):指定在初始化环境期间分配的用户内存量。(暂不支持)
- usrmempp (OUT):返回一个指针,该指针指向xtramemsz大小的用户内存。(暂不支持)
其他说明
无
OCIEnvCreate
功能描述
创建并初始化 OCI 函数的工作环境句柄。
功能说明
此调用返回一个环境句柄,由其余 OCI 函数使用。OCI 中可以有多个环境,每个环境都有自己的环境模式。如果任何模式需要,此函数还会执行任何进程级初始化。例如,如果要将mode参数设为OCI_THREADED ,则 OCI 使用的所有库也将在线程模式下初始化。
接口信息
函数/过程
OCIEnvCreate语法如下:
sword OCIEnvCreate(
OCIEnv **envp,
ub4 mode,
void *ctxp,
void *(*malocfp)(void *ctxp, size_t size),
void *(*ralocfp)(void *ctxp, void *memptr, size_t newsize),
void (*mfreefp)(void *ctxp, void *memptr),
size_t xtramem_sz,
void **usrmempp
);
参数解释如下:
- envhpp (OUT):用来保存创建完成的OCIEnv句柄。
- mode (IN):指定初始化模式类型。
- OCI_DEFAULT:默认模式。
- OCI_THREADED:线程环境模式。在此模式下,不向用户公开的内部数据结构受到保护,防止多个线程并发访问。(暂不支持)
- OCI_OBJECT:使用对象特性。(暂不支持)
- OCI_EVENTS:使用发布者-订阅者通知模式。(暂不支持)
- OCI_NO_UCB:抑制动态回调函数OCIEnvCallback()的调用。默认行为是允许在创建环境时调用。(暂不支持)
- OCI_ENV_NO_MUTEX:在此模式下不会发生互斥(互斥)锁定。在环境句柄或从环境句柄派生的句柄上完成的所有 OCI 调用都必须序列化。(暂不支持)
- OCI_SUPPRESS_NLS_VALIDATION:禁止 NLS 字符验证。(暂不支持)
- OCI_NEW_LENGTH_SEMANTICS:字节长度语义一致地用于所有句柄,而不考虑字符集。(暂不支持)
- OCI_NCHAR_LITERAL_REPLACE_ON:打开 N' 替换。(暂不支持)
- OCI_NCHAR_LITERAL_REPLACE_OFF:关闭 N' 替换。(暂不支持)
- OCI_ENABLE_NLS_VALIDATION:启用 NLS 字符验证。(暂不支持)
- ctxp (IN):用户自定义内存回调函数的上下文环境。
malocfp (IN): 用户自定义的内存分配函数。如果mode为OCI_THREADED ,则此内存分配函数必须是线程安全的。(暂不支持)
- cxtp(IN/OUT):内存分配功能的上下文指针。
- size(IN):分配的内存大小。
ralocfp (IN):用户自定义的内存重新分配函数。如果mode为OCI_THREADED ,则此内存分配函数必须是线程安全的。(暂不支持)
- ctxp (IN/OUT):内存重新分配功能的上下文指针。
- memptr (IN/OUT):内存重新分配获得的内存块指针。
- newsize (IN):重新分配的内存大小。
mfreefp (IN):用户自定义的内存释放函数。如果mode为OCI_THREADED ,则此内存函数必须是线程安全的。(暂不支持)。
- cxtp(IN/OUT):内存释放功能的上下文指针。
- memptr(IN):指向要释放的内存的指针。
xtramemsz (IN):指定在初始化环境期间分配的用户内存量。(暂不支持)
usrmempp (OUT):返回一个指针,该指针指向xtramemsz大小的用户内存。(暂不支持)
外部接口
无
其他说明
无
OCIEnvNlsCreate
功能描述
创建并初始化 OCI 函数工作的环境句柄,提供字符集和国家字符集设置功能。
功能说明
1、此调用可以为所有 OCI 调用创建一个环境,创建环境句柄后,绑定和定义句柄的实际长度和返回的长度始终以字节数表示。
2、该函数能够在创建环境时设置数据库字符集charset和国家字符集ncharset。数据库字符集用于存储CHAR,VARCHAR2,CLOB,LONG等类型数据;表示诸如表名、列名以及/PL/SQL变量等;同时也可以用于存储SQL和PL/SQL程序单元等。
3、国家字符集则用于存储NCHAR,NVARCHAR2,NCLOB等类型数据,国家字符集实质上是为oracle选择的附加字符集,主要作用是为了增强Oracle的字符处理能力,因为NCHAR数据类型可以提供对亚洲使用定长多字节编码的支持,而数据库字符集则不能。
4、OCIEnvNlsCreate是OCIEnvCreate()函数的增强版本,charset控制元素据和属性的编码,ncharset控制SQLCS_NCHAR类型属性编码,在设置字符集时,charset和ncharset必须同时为0或者不为0,否则会导致错误。当两者均设置为0时,该函数功能与OCIEnvCreate函数无异。
使用流程
与OCIEnvCreate类似,此处不再详细介绍。
配置参数和文件
无
数据相关性
无
接口信息
函数/过程
OCINlsEnvCreate语法如下:
sword OCIEnvNlsCreate(
OCIEnv **envp,
ub4 mode,
void *ctxp,
void *(*malocfp)(void *ctxp, size_t size),
void *(*ralocfp)(void *ctxp, void *memptr, size_t newsize),
void (*mfreefp)(void *ctxp, void *memptr),
size_t xtramem_sz,
void **usrmempp,
ub2 charset,
ub2 ncharset
);
参数解释如下:
- envhpp (OUT):用来保存创建完成的OCIEnv句柄。
- mode (IN):指定初始化模式类型。
- OCI_DEFAULT:默认模式。
- OCI_THREADED - 线程环境模式。在此模式下,不向用户公开的内部数据结构受到保护,防止多个线程并发访问。(暂不支持)
- OCI_OBJECT:使用对象特性。(暂不支持)
- OCI_EVENTS:使用发布者-订阅者通知模式。(暂不支持)
- OCI_NO_UCB:抑制动态回调函数OCIEnvCallback()的调用。默认行为是允许在创建环境时调用。(暂不支持)
- OCI_ENV_NO_MUTEX - 在此模式下不会发生互斥(互斥)锁定。在环境句柄或从环境句柄派生的句柄上完成的所有 OCI 调用都必须序列化。(暂不支持)
- OCI_SUPPRESS_NLS_VALIDATION:禁止 NLS 字符验证。(暂不支持)
- OCI_NCHAR_LITERAL_REPLACE_ON:打开 N' 替换。(暂不支持)
- OCI_NCHAR_LITERAL_REPLACE_OFF:关闭 N' 替换。(暂不支持)
- OCI_ENABLE_NLS_VALIDATION:启用 NLS 字符验证。(暂不支持)
- ctxp (IN):用户自定义内存回调函数的上下文环境
- malocfp (IN): 用户定义的内存分配函数。如果mode为 OCI_THREADED ,则此内存分配函数必须是线程安全的。(暂不支持)
- cxtp(IN/OUT):内存分配功能的上下文指针
- size(IN):分配的内存大小
- ralocfp (IN):用户定义的内存重新分配函数。如果mode为OCI_THREADED ,则此内存分配函数 必须是线程安全的。(暂不支持)
- ctxp (IN/OUT):内存重新分配功能的上下文指针
- memptr (IN/OUT):重新分配获得的内存块指针
- newsize (IN):重新分配的内存大小 mfreefp (IN):用户自定义的内存释放函数。如果mode为OCI_THREADED ,则此内存函数必须是线程安全的。(暂不支持)
- cxtp(IN/OUT):内存释放函数的上下文指针
- memptr(IN):指向要释放的内存的指针
- xtramemsz(IN):指定要在环境持续时间内分配的用户内存量。
- usrmempp(OUT):返回一个指针,该指针指向xtramemsz大小的用户内存。
- charset (IN):当前环境句柄的客户端字符集。
- ncharset (IN):当前环境句柄的客户端国家字符集。
其他说明
无
OCITerminate
功能描述
用于程序的结束,与OCIInitialize ()调用的对应。
功能说明
对于每个进程,OCITerminal ()应该只调用一次,它是 OCIInitialize ()调用的对应物。调用将尝试从共享内存子系统中分离进程并关闭它。它还执行其他流程清理操作。一般在程序结束的时候调用。
接口信息
函数/过程
OCITerminate的语法如下:
sword OCITerminate (ub4 mode)
参数解释如下:
mode:
调用特定模式。
有效值:
OCI _ DEFAULT:执行默认调用。
其他说明
无