Object类型接口
OCIDefineObject
功能描述
设置命名数据类型或 REF 定义所需的其他属性(本次只实现REF)。
功能说明
此函数遵循对 OCIDefineByPos() 或 OCIDefineByPos2() 的调用来设置初始定义信息。此调用设置命名数据类型定义所需的其他属性。如果在非对象模式下初始化 OCI 环境时调用此函数,则会返回错误。
接口信息
函数/过程
OCIDefineObject gon语法如下:
sword OCIDefineObject ( OCIDefine *defnp,
OCIError *errhp,
const OCIType *type,
void **pgvpp,
ub4 *pvszsp,
void **indpp,
ub4 *indszp )
具体参数解释如下:
- defnp(IN/OUT):之前调用 OCIDefineByPos() 或 OCIDefineByPos2() 时分配的定义句柄。
- errhp(IN/OUT):OCI 错误句柄。如果存在错误,则会将其记录在 err 中,此函数返回OCI_ERROR。通过调用 OCIErrorGet() 获取诊断信息。
- type(IN):指向描述程序变量类型的类型描述符对象 (TDO)。此参数对于类型为 SQLT_REF 的变量是可选的,如果未使用,则可以将其作为 NULL 传递。当前只支持(SQLT_REF)类型数据
- pgvpp(IN/OUT):指向程序变量缓冲区的指针。对于数组,pgvpp 指向指针数组。提取的命名数据类型实例的内存在对象缓存中动态分配。在获取结束时,当收到所有值时,pgvpp 指向指向这些新分配的命名数据类型实例的指针。应用程序必须调用 OCIObjectFree()来在不再需要命名数据类型实例时解除分配它们。如果应用程序希望在缓存中隐式分配缓冲区,则应将 *pgvpp 作为 NULL 传入。
- pvszsp(IN/OUT):指向程序变量的大小。对于数组,它是 ub4 的数组。
- indpp(IN/OUT):指向包含并行指示器结构的程序变量缓冲区的指针。对于数组,指向指针数组。分配内存以将指标结构存储在对象缓存中。在获取结束时,当收到所有值时,indpp 指向指向这些新分配的指标结构的指针。
- indszp (IN/OUT):指向指标结构程序变量的大小。对于数组,它是一个 ub4 数组。
其他说明
无
OCIObjectNew
功能描述
创建独立实例。
功能说明
此函数创建类型代码或 TDO 指定的类型的新实例。类型可以是复杂的,也可以是基元的。(当前只支持 REF 类型。)
数据相关性
无
接口信息
函数/过程
OCIObjectNew 语法如下:
sword OCIObjectNew ( OCIEnv *env,
OCIError *err,
const OCISvcCtx *svc,
OCITypeCode typecode,
OCIType *tdo,
void *table,
OCIDuration duration,
boolean value,
void **instance );
参数的解释如下:
- env(IN/OUT):在对象模式下初始化的 OCI 环境句柄。
- err(IN/OUT):OCI 错误句柄。如果存在错误,则会将其记录在 err 中,此函数返回OCI_ERROR。通过调用 OCIErrorGet() 获取诊断信息。
- svc(IN):服务上下文句柄。
typecode(IN):typecode 所指的类型(当前只支持REF),具体如下:
类型标识 类型 是否支持 OCI_TYPECODE_REF REF 是 OCI_TYPECODE_DATE DATE 是 OCI_TYPECODE_TIMESTAMP TIMESTAMP 否 OCI_TYPECODE_TIMESTAMP_TZ TIMESTAMP WITH TIME ZONE 否 OCI_TYPECODE_TIMESTAMP_LTZ TIMESTAMP WITH LOCAL TIME ZONE 否 OCI_TYPECODE_INTERVAL_YM INTERVAL YEAR TO MONTH 否 OCI_TYPECODE_INTERVAL_DS INTERVAL DAY TO SECOND 否 OCI_TYPECODE_REAL Single-precision real 否 OCI_TYPECODE_DOUBLE Double-precision real 否 OCI_TYPECODE_FLOAT Floating-point 否 OCI_TYPECODE_NUMBER Oracle NUMBER 否 OCI_TYPECODE_BFLOAT BINARY_FLOAT 否 OCI_TYPECODE_BDOUBLE BINARY_DOUBLE 否 OCI_TYPECODE_DECIMAL Decimal 否 OCI_TYPECODE_OCTET Octet 否 OCI_TYPECODE_INTEGER Integer 否 OCI_TYPECODE_SMALLINT Small int 否 OCI_TYPECODE_RAW RAW 否 OCI_TYPECODE_VARCHAR2 Variable string ANSI SQL, that is, VARCHAR2 否 OCI_TYPECODE_VARCHAR Variable string Oracle SQL, that is, VARCHAR 否 OCI_TYPECODE_CHAR Fixed-length string inside SQL, that is SQL CHAR 否 OCI_TYPECODE_VARRAY Variable-length array (varray) 否 OCI_TYPECODE_TABLE Multiset 否 OCI_TYPECODE_CLOB Character large object (CLOB) 否 OCI_TYPECODE_BLOB Binary large object (BLOB) 否 OCI_TYPECODE_BFILE Binary large object file (BFILE) 否 OCI_TYPECODE_OBJECT Named object type, or SYS.XMLType 否 OCI_TYPECODE_NAMEDCOLLECTION Collection 否 OCI_TYPECODE_BOOLEANFoot 22 Boolean 否 OCI_TYPECODE_RECORDFoot 22 Record 否 OCI_TYPECODE_ITABLEFoot 22 Index-by BINARY_INTEGER 否 OCI_TYPECODE_INTEGERFoot 22 PLS_INTEGER or BINARY_INTEGER 否 tdo(IN):指向类型描述符对象的指针。TDO描述了要创建的实例的类型。(暂不支持)
table(IN):指向指定服务器中的表的表对象的指针。如果未给出表,则可以将此参数设置为 NULL。请参阅以下说明,了解如何将表对象和 TDO 一起使用来确定要创建的实例类型(持久、瞬态、值)。
duration(IN):这是一个重载参数。此参数的使用基于要创建的实例的类型。(暂不支持)
- 对于实例的持久对象类型,此参数指定引脚持续时间。
- 对于实例的瞬态对象类型,此参数指定分配持续时间和引脚持续时间。
- 对于实例的值类型,此参数指定分配持续时间。
value(IN):指定创建的对象是否为值。如果为 TRUE,则创建一个值。否则,将创建可引用对象。如果实例不是对象,则忽略此参数。(暂不支持)
instance (OUT):新创建的实例的地址。
其他说明
无
OCIObjectFree
功能描述
设置命名数据类型或 REF 定义所需的其他属性(本次只实现REF)。
功能说明
此函数遵循对 OCIDefineByPos() 或 OCIDefineByPos2() 的调用来设置初始定义信息。此调用设置命名数据类型定义所需的其他属性。如果在非对象模式下初始化 OCI 环境时调用此函数,则会返回错误。
接口信息
函数/过程
OCIObjectFree gon语法如下:
sword OCIObjectFree ( OCIEnv *env,
OCIError *err,
void *instance,
ub2 flags )
具体参数解释如下:
- env(IN/OUT):在对象模式下初始化的 OCI 环境句柄。
- err(IN/OUT):OCI 错误句柄。如果存在错误,则会将其记录在 err 中,此函数返回OCI_ERROR。通过调用 OCIErrorGet() 获取诊断信息。
- instance(IN):指向独立实例的指针。如果是对象,则必须固定。
- flags (IN):如果通过OCI_OBJECTFREE_FORCE,即使对象被固定或弄脏,也要释放它。如果传递OCI_OBJECTFREE_NONULL,则不会释放 NULL 结构。(暂不支持)。
其他说明
无