KES DCI接口函数

. DCI 函数

2.1. DCIInitialize

函数原型:

sword DCIInitialize(ub4             mode,
                    dvoid           *ctxp,
                    dvoid           *(*malocfp)(dvoid *ctxp, size_t size),
                    dvoid           *(*ralocfp)(dvoid *ctxp, dvoid *memptr,
                                    size_t newsize),
                    void            (*mfreefp)(dvoid *ctxp, dvoid *memptr) )

功能描述:

初始化 DCI 全局环境,DCI 会在这个函数中初始化内部的全局变量和加载一些配置信息,这是使用 DCI 与数据库建立连接必须的第一步。

参数说明:

  • mode(输入)

    初始化模式。取值如下:

    • DCI_DEFAULT:缺省模式

    • DCI_THREADED:多线程模式

  • ctxp(输入/输出)

    用户自定义的内存回调程序指针,目前不使用(仅用于和 Oracle 保持兼容)

  • malocfp(输入)

    用户自定义的内存分配程序指针,目前不使用(仅用于和 Oracle 保持兼容)

  • ralocfp(输入)

    用户自定义的重分配内存程序指针,目前不使用(仅用于和 Oracle 保持兼容)

  • memptr(输入/输出)

    指向内存块的指针,目前不使用(仅用于和 Oracle 保持兼容)

  • mfreefp(输入)

    用户自定义的内存释放程序指针,目前不使用(仅用于和 Oracle 保持兼容)

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

该函数在每个应用中只需调用一次。

2.2. DCIEnvCreate

目录

. DCI 函数¶

1.1. DCIInitialize¶

1.2. DCIEnvCreate¶

1.3. DCIEnvInit¶

1.4. DCIHandleAlloc¶

1.5. DCIHandleFree¶

1.6. DCIServerVersion¶

1.7. DCIServerAttach¶

1.8. DCIServerDetach¶

1.9. DCISessionBegin¶

1.10. DCISessionEnd¶

1.11. DCILogon¶

1.12. DCILogon2¶

1.13. DCILogoff¶

1.14. DCIStmtPrepare¶

1.15. DCIStmtExecute¶

1.16. DCIStmtFetch¶

1.17. DCIStmtFetch2¶

1.18. DCITransStart¶

1.19. DCITransCommit¶

1.20. DCITransRollback¶

1.21. DCIBindByName¶

1.22. DCIBindByPos¶

1.23. DCIBindArrayOfStruct¶

1.24. DCIDefineByPos¶

1.25. DCIDefineArrayOfStruct¶

1.26. DCIDescriptorAlloc¶

1.27. DCIDescriptorFree¶

1.28. DCILobAssign¶

1.29. DCILobAppend¶

1.30. DCILobCopy¶

1.31. DCILobEnableBuffering¶

1.32. DCILobDisableBuffering¶

1.33. DCILobErase¶

1.34. DCILobFlushBuffer¶

1.35. DCILobIsEqual¶

1.36. DCILobLocatorIsInit¶

1.37. DCILobCharSetForm¶

1.38. DCILobCharSetId¶

1.39. DCILobClose¶

1.40. DCILobCreateTemporary¶

1.41. DCILobFreeTemporary¶

1.42. DCILobIsTemporary¶

1.43. DCILobIsOpen¶

1.44. DCILobTrim¶

1.45. DCILobGetLength¶

1.46. DCILobOpen¶

1.47. DCILobRead¶

1.48. DCILobWrite¶

1.49. DCINumberAdd¶

1.50. DCINumberAssign¶

1.51. DCINumberDiv¶

1.52. DCINumberIsInt¶

1.53. DCINumberMod¶

1.54. DCINumberMul¶

1.55. DCIDescribeAny¶

1.56. DCIParamGet¶

1.57. DCIAttrSet¶

1.58. DCIAttrGet¶

1.59. DCIDirPathPrepare¶

1.60. DCIDirPathColArrayEntrySet¶

1.61. DCIDirPathColArrayToStream¶

1.62. DCIDirPathLoadStream¶

1.63. DCIDirPathDataSave¶

1.64. DCIDirPathColArrayReset¶

1.65. DCIDirPathStreamReset¶

1.66. DCIDirPathFinish¶

1.67. DCIDirPathFlushRow¶

1.68. DCIErrorGet¶

1.69. DCIDateTimeConstruct¶

1.70. DCIDateTimeGetDate¶

1.71. DCIDateTimeGetTime¶

1.72. DCIIntervalGetDaySecond¶

1.73. DCIIntervalGetYearMonth¶

1.74. DCIIntervalFromText¶

1.75. DCINumberToText¶

1.76. DCINumberFromText¶

1.77. DCINumberToInt¶

1.78. DCINumberFromInt¶

1.79. DCINumberToReal¶

1.80. DCINumberFromReal¶

1.81. DCIStmtGetPieceInfo¶

1.82. DCIStmtSetPieceInfo¶

1.83. DCIDateTimeFromText¶

1.84. DCIDateTimeToText¶

1.85. DCIDateFromText¶

1.86. DCIDateToText¶


函数原型:

sword   DCIEnvCreate (DCIEnv      **envp,
                      ub4         mode,
                      const void  *ctxp,
                      const void  *(*malocfp)(void *ctxp, size_t size),
                      const void  *(*ralocfp)(void *ctxp, void *memptr,
                                  size_t newsize),
                      const void   (*mfreefp)(void *ctxp, void *memptr))

功能描述:

分配并初始化 DCI 环境句柄,此函数必须在 DCIInitialize 之后调用。

参数说明:

  • envp(输入)

    输出一个生成的环境句柄指针,应用可以在环境句柄上分配其它类型的句柄。

  • mode(输入)

    初始化模式。取值如下:

    • DCI_DEFAULT:缺省模式

    • DCI_THREADED:多线程模式

  • ctxp(输入/输出)

    用户自定义的内存回调程序指针,目前不使用(仅用于和 Oracle 保持兼容)

  • malocfp(输入)

    用户自定义的内存分配程序指针,目前不使用(仅用于和 Oracle 保持兼容)

  • ralocfp(输入)

    用户自定义的重分配内存程序指针,目前不使用(仅用于和 Oracle 保持兼容)

  • memptr(输入/输出)

    指向内存块的指针,目前不使用(仅用于和 Oracle 保持兼容)

  • mfreefp(输入)

    用户自定义的内存释放程序指针,目前不使用(仅用于和 Oracle 保持兼容)

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

当调用该函数初始化一个环境句柄以后,必须调用 DCIHandleFree 来释放这个句柄。需要注意的是,当环境句柄分配以后,只允许在上面分配一个上下文句柄,并只允许建立一个连接;但是在连接建立以后,允许分配多个语句句柄。

2.3. DCIEnvInit

函数原型:

sword   DCIEnvInit(DCIEnv  **envp,
                   ub4     mode,
                   size_t  xtramem_sz,
                   dvoid   **usrmempp)

功能描述:

功能与DCIEnvCreate相同。分配并初始化 DCI 环境句柄,此函数必须在 DCIInitialize 之后调用。

参数说明:

  • envp(输出)

    输出一个生成的环境句柄指针,应用可以在环境句柄上分配其它类型的句柄。

  • mode(输入)

    初始化模式。取值如下:

    • DCI_DEFAULT:缺省模式

    • DCI_THREADED:多线程模式

  • xtramem_sz(输入)

    用户自定义分配内存的大小,目前不使用(仅用于和 Oracle 保持兼容)

  • usrmempp(输出)

    指向用户自定义分配内存的指针,目前不使用(仅用于和 Oracle 保持兼容)

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

当调用该函数初始化一个环境句柄以后,必须调用 DCIHandleFree 来释放这个句柄。需要注意的是,当环境句柄分配以后,只允许在上面分配一个上下文句柄,并只允许建立一个连接;但是在连接建立以后,允许分配多个语句句柄。

2.4. DCIHandleAlloc

函数原型:

sword   DCIHandleAlloc(dvoid        *parenth,
                       dvoid        **hndlpp,
                       CONST ub4    type,
                       CONST size_t xtramem_sz,
                       dvoid        **usrmempp)

功能描述:

分配并初始化各类应用句柄。

参数说明:

  • parentth(输入)

    一个环境句柄的指针,从该句柄上可以分配的其它类型的句柄。

  • hndlpp(输出)

    返回新分配的句柄指针。

  • type(输入)

    指定要从环境句柄上分配的句柄类型。可以分配的句柄类型有:

    • DCI_HTYPE_SERVER

      分配一个 DCIServer 结构句柄(连接句柄),该句柄上存放建立的连接句柄。

    • DCI_HTYPE_SESSION

      分配一个 DCISession 结构句柄(连接信息句柄),该句柄上存放建立连接所用的登录信息,比如登录的口令和密码。

    • DCI_HTYPE_SVCCTX

      分配一个 DCISvcCtx 结构句柄(上下文句柄),该句柄上存放的是连接句柄和其它类型句柄的关联信息。当该句柄调用 DCITransCommit 或 DCITransRollback 函数提交或回滚时将会影响该句柄所在环境句柄上的所有语句句柄 SQL 操作。

    • DCI_HTYPE_STMT

      分配一个 DCIStmt 结构句柄(语句句柄),分配该句柄时,环境句柄上必须已经分配了连接句柄并已经建立了连接。可以在一个环境句柄上分配多个语句句柄,每个语句句柄可以进行独立的 SQL 操作。

    • DCI_HTYPE_DESCRIBE

      分配一个 DCIDescribe 结构句柄(描述对象句柄),该句柄可以用来描述某个数据库中的对象,如表,存储过程等。通过这个句柄,可以得到对象的具体信息,如表结构中的每个列信息,存储过程中的每个参数信息。

    • DCI_HTYPE_ERROR

      分配一个 DCIError 结构句柄(错误描述句柄),该句柄存放每次 DCI 操作失败的原因,通过调用 DCIErrorGet 函数可以获取到这些信息。

    • DCI_HTYPE_DIRPATH_CTX

      分配一个 DCIDirPathCtx 结构句柄(直接文件操作环境上下文)

    • DCI_HTYPE_DIRPATH_COLUMN_ARRAY

      分配一个 DCIDirPathColArray 结构句柄(数据数组描述符)

    • DCI_HTYPE_DIRPATH_STREAM

      分配一个 DCIDirPathStream 结构句柄(数据流描述符)

  • xtramem_sz(输入)

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

  • usrmempp(输出)

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

需要注意的是调用该函数分配句柄成功以后,必须调用 DCIHandleFree 来释放这个句柄。当该函数调用失败时,失败信息会存放在环境句柄中,可以通过调用 DCIErrorGet 接口并指定句柄类型为 DCI_HTYPE_ENV 来获取失败的原因。

2.5. DCIHandleFree

函数原型:

sword DCIHandleFree(void  *hndlp,
                    ub4   type );

功能描述:

释放已分配的各类句柄,用于结束当前会话、断开与数据库的连接后的句柄清理。

参数说明:

  • hndlp(输入)

    需要释放的句柄。

  • type(输入)

    指定需要释放的句柄类型。参见 DCIHandleAlloc 函数说明的 type 参数。

返回值:

如果释放成功,返回 DCI_SUCCESS,失败返回 DCI_ERROR,如果 hndlp 指向的句柄无效,返回 DCI_INVALID_HANDLE。

注释:

DCIHandleFree 函数需要和 DCIHandleAlloc 函数配合使用。

2.6. DCIServerVersion

函数原型:

sword   DCIServerVersion(void     *hndlp,
                         DCIError *errhp,
                         DciText  *bufp,
                         ub4       bufsz,
                         ub4       hndltype)

功能描述:

返回Kingbase服务器版本号。

参数说明:

  • hndlp(输入)

    DCISvcCtx上下文句柄。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • bufp(输出)

    服务器版本信息。

  • bufsz(输入)

    服务器版本信息bufp的长度(字节)。

  • hndltype(输入)

    hndlp的句柄类型:DCI_HTYPE_SVCCTX

返回值:

如果释放成功,返回 DCI_SUCCESS,失败返回 DCI_ERROR,如果 hndlp 指向的句柄无效,返回 DCI_INVALID_HANDLE。

2.7. DCIServerAttach

函数原型:

sword   DCIServerAttach (DCIServer     *srvhp,
                         DCIError      *errhp,
                         CONST DciText *dblink,
                         sb4            dblink_len,
                         ub4            mode)

功能描述:

将一个数据库服务挂载到一个指定的连接句柄上。

参数说明:

  • srvhp(输入)

    连接句柄指针,该句柄将会跟输入的服务名相关联。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • dblink(输入)

    要关联的数据库服务名。该服务名需要在DCI的配置文件中配置。

  • dblink_len(输入)

    数据库服务名的长度。

  • mode(输入)

    附加模式,取值如下:

    • DCI_DEFAULT:缺省模式

    • DCI_THREADED:多线程模式

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

调用该函数以后,可以调用 DCIServerDetach 函数解除连接和服务名之间的关联。

2.8. DCIServerDetach

函数原型:

sword   DCIServerDetach (DCIServer  *srvhp,
                         DCIError   *errhp,
                         ub4        mode)

功能描述:

解除连接句柄和数据库服务名之间的关联。

参数说明:

  • srvhp(输入)

    连接句柄,该句柄将会被解除与数据库服务名的关联。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • mode(输入)

    附加模式,取值如下:

    • DCI_DEFAULT:缺省模式

    • DCI_THREADED:多线程模式

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.9. DCISessionBegin

函数原型:

sword   DCISessionBegin(DCISvcCtx  *svchp,
                        DCIError   *errhp,
                        DCISession *usrhp,
                        ub4         credt,
                        ub4         mode)

功能描述:

使用登录信息在指定的连接类句柄上打开与数据库服务的连接。

参数说明:

  • svchp(输入)

    指定打开连接的上下文,在这之前,上下文必须已经被关联了连接句柄。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • usrhp(输入)

    登录信息句柄,执行登录之前,该句柄上必须已经设置了登录的用户名和口令。

  • credt(输入)

    登录的方式,目前只支持 DCI_CRED_RDBMS – 通过用户名和口令与数据库服务建立起连接。

  • mode(输入)

    连接模式,取值如下:

    • DCI_DEFAULT:缺省模式

    • DCI_THREADED:多线程模式

返回值:

如果执行成功,返回DCI_SUCCESS,否则返回DCI_ERROR。

注释:

当调用该函数与数据库服务建立连接以后,连接上的操作都处在非自动提交状态,在每次执行 SQL 以后,你可能要根据实际的需要通过调用 DCITransCommit 或 DCITransRollback 来提交或回滚你的 SQL 操作;另外,当调用此方法建立连接以后,必须通过调用 DCISessionEnd 来结束这个连接。

2.10. DCISessionEnd

函数原型:

sword   DCISessionEnd (DCISvcCtx  *svchp,
                       DCIError   *errhp,
                       DCISession *usrhp,
                       ub4         mode)

功能描述:

结束 DCISessionBegin 函数中连接类句柄与数据库服务之间的连接。

参数说明:

  • svchp(输入)

    指定断开连接的上下文。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • usrhp(输入)

    登录信息句柄。

  • mode(输入)

    连接模式,取值如下:

    • DCI_DEFAULT:缺省模式

    • DCI_THREADED:多线程模式

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

在解除关联之前,如果连接上存在未提交的事务,那么解除连接后将全部回滚。

2.11. DCILogon

函数原型:

sword   DCILogon (DCIEnv         *envhp,
                  DCIError       *errhp,
                  DCISvcCtx      **svchp,
                  CONST DciText  *username,
                  ub4            uname_len,
                  CONST DciText  *password,
                  ub4            passwd_len,
                  CONST DciText  *dbname,
                  ub4            dbname_len)

功能描述:

根据数据库服务名、用户名和密码,登录到一个指定的数据库服务上,并初始化相关的上下文句柄。

参数说明:

  • envhp(输入)

    操作所在的环境句柄,如果未指定上下文句柄,那么该函数在建立登录连接以后,会在该句柄上自动分配一个上下文句柄。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • svchp(输入/输出)

    如果指定的上下文句柄非空,那么在登录以后,会自动设置相关的连接句柄到该句柄上。如果指定的上下文句柄为空,那么 DCI 会自动分配一个上下文句柄输出,这个上下文句柄不需要通过调用 DCIHandleFree 来释放;当应用调用 DCILogoff 以后,DCI 会自动释放这个句柄。

  • username(输入)

    登录的用户名。

  • uname_len(输入)

    登录的用户名长度。

  • password(输入)

    登录的口令。

  • passwd_len(输入)

    登录的口令长度。

  • dbname(输入)

    数据库服务名。

  • dbname_len(输入)

    数据库服务名长度。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

需要注意的是,这种方式连接建立以后,连接上的操作都处在非自动提交状态,在每次执行 SQL 以后,你可能要根据实际的需要通过调用 DCITransCommit 或 DCITransRollback 来提交或回滚你的SQL操作;另外,当连接建立以后,需要通过调用 DCILogoff 来断开连接。

2.12. DCILogon2

函数原型:

sword   DCILogon2(DCIEnv         *envhp,
                  DCIError       *errhp,
                  DCISvcCtx      **svchp,
                  CONST DciText  *username,
                  ub4            uname_len,
                  CONST DciText  *password,
                  ub4            passwd_len,
                  CONST DciText  *dbname,
                  ub4            dbname_len,
                  ub4            mode)

功能描述:

根据数据库服务名、用户名和密码,并根据传入的连接创建模式登录到一个指定的数据库服务上,并初始化相关的上下文句柄。

参数说明:

  • envhp(输入)

    操作所在的环境句柄,如果未指定上下文句柄,那么该函数在建立登录连接以后,会在该句柄上自动分配一个上下文句柄。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • svchp(输入/输出)

    如果指定的上下文句柄非空,那么在登录以后,会自动设置相关的连接句柄到该句柄上。如果指定的上下文句柄为空,那么 DCI 会自动分配一个上下文句柄输出,这个上下文句柄不需要通过调用 DCIHandleFree 来释放;当应用调用 DCILogoff 以后,DCI 会自动释放这个句柄。

  • username(输入)

    登录的用户名。

  • uname_len(输入)

    登录的用户名长度。

  • password(输入)

    登录的口令。

  • passwd_len(输入)

    登录的口令长度。

  • dbname(输入)

    数据库服务名。

  • dbname_len(输入)

    数据库服务名长度。

  • mode(输入)

    数据库连接的创建模式。

    DCI_DEFAULT – 等效于调用DCILogon

    DCI_LOGON2_STMTCACHE – 语句缓冲模式

    DCI_LOGON2_CPOOL / DCI_CPOOL –连接池模式

    DCI_LOGON2_SPOOL –会话池模式

    DCI_LOGON2_PROXY –授权代理模式

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

需要注意的是,该函数目前只支持以DCI_DEFAULT模式创建连接。

2.13. DCILogoff

函数原型:

sword   DCILogoff(DCISvcCtx *svchp,
                  DCIError  *errhp)

功能描述:

断开通过 DCILogon 与服务器建立的连接。

参数说明:

  • svchp(输入)

    要断开连接的上下文句柄,该连接必须是通过 DCILogon 建立的。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

在解除连接之前,如果连接上存在未提交的事务,那么解除连接后将全部回滚。

2.14. DCIStmtPrepare

函数原型:

sword   DCIStmtPrepare (DCIStmt    *stmtp,
                        DCIError   *errhp,
                        DciText    *stmt,
                        ub4         stmt_len,
                        ub4         language,
                        ub4         mode)

功能描述:

准备一条 SQL 语句,以便随后调用 DCIStmtExecute 来执行。

参数说明:

  • stmtp(输入)

    用来准备执行的语句句柄。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • stmt(输入)

    准备执行的 SQL 语句。

  • stmt_len(输入)

    stmt参数中 SQL 语句的长度。

  • Language

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

  • mode(输入)

    准备模式,取值如下:

    • DCI_DEFAULT:缺省模式

    • DCI_THREADED:多线程模式

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

在调用该函数成功准备一条 SQL 以后,可以多次调用 DCIStmtExecute 执行这条 SQL 语句。如果在该函数执行以后,对SQL上的参数或结果集进行了绑定操作,那么,只有在下一次调用该函数以后,这些绑定信息才会被解除。SQL 语句的格式可以是单条 SQL,也可以是多条 SQL 组合成的一条语句。

2.15. DCIStmtExecute

函数原型:

sword   DCIStmtExecute (DCISvcCtx           *svchp,
                        DCIStmt             *stmtp,
                        DCIError            *errhp,
                        ub4                 iters,
                        ub4                 rowoff,
                        CONST DCISnapshot   *snap_in,
                        DCISnapshot         *snap_out,
                        ub4                 mode)

功能描述:

执行通过 DCIStmtPrepare 准备后的语句。

参数说明:

  • svchp(输入)

    执行所用的上下文句柄。

  • stmtp(输入)

    用来执行的语句句柄。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • iters(输入)

    执行后影响的行数。对非查询语句,该参数表明一次性向服务器发送的数据行数,这个时候,该值必须大于等于1;对于查询语句,该参数表明一次性从服务器获取的结果集行数。应用程序必须在绑定行集时,必须申请足够多的内存来接收返回的行集。

  • rowoff(输入)

    行集偏移。对于查询语句,该参数将被忽略;对于非查询语句,该参数表明向服务器发送多行数据时的起始偏移行,从 0 开始计算。

  • snap_in

    保留参数,目前不使用(仅用于和Oracle保持兼容)

  • snap_out

    保留参数,目前不使用(仅用于和Oracle保持兼容)

  • mode(输入)

    执行的模式,可以是下面几种类型:

    • DCI_DESCRIBE_ONLY – 描述模式

      通过该模式描述准备好的语句(并不执行语句),从而得到语句的结果集元信息,应用程序可以通过调用 DCIAttrGet 函数来获取这些元信息,详细解释请参看下面将要提到的 DCIAttrGet 函数说明。另外,该模式只对DQL语句有效,其他类型的语句在该模式下执行会报错。

    • DCI_EXACT_FETCH – 提取模式

      当执行完以后,将会从结果集中提交 iters 参数指定的结果集行数到绑定的缓冲区。

    • DCI_COMMIT_ON_SUCCESS – 自动提交模式

      当 SQL 执行以后,会自动提交执行的 SQL。

    • DCI_DEFAULT – 默认模式

      等价于 DCI_EXACT_FETCH。

返回值:

如果执行成功,但是在提取结果集时发生警告性的错误(字符串截断、转换溢出等),那么返回 DCI_SUCCESS_WITH_INFO,如果执行成功,但是结果集返回的行数小于 iters 参数所指定的行数,那么返回 DCI_NO_DATA,其它正常情况下返回 DCI_SUCCESS,执行出错则返回 DCI_ERROR。

注释:

当函数返回 DCI_NO_DATA时,并不是表示没有结果集返回,而是返回的结果集行数小于 iters 参数指定的行数,并且结果集游标已经到达末尾。可以调用 DCIAttrGet 函数查看属性 DCI_ATTR_ROW_COUNT 的描述来获取结果集中总共被提取的行数。

2.16. DCIStmtFetch

函数原型:

sword   DCIStmtFetch (DCIStmt       *stmtp,
                      DCIError      *errhp,
                      ub4           nrows,
                      ub2           orientation,
                      ub4           mode)

功能描述:

获取 SQL 生成的结果集中的行集。当执行一条查询以后,可以多次调用该函数来提取结果集中的数据行,直至该函数返回 DCI_NO_DATA,说明已获得结果集中全部的数据行。

参数说明:

  • stmtp(输入)

    用来提取结果集的语句句柄。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • nrows(输入)

    一次操作需要获取的行数。

  • orientation(输入)

    行集提取的方式,可以有以下几种方式:

    • DCI_FETCH_NEXT – 从当前游标位置向下进行提取操作。

    • DCI_FETCH_FIRST – 从结果集的第一行开始向下进行提取操作。

    • DCI_FETCH_LAST – 从结果集的最后一行开始向下提取操作。

    • DCI_FETCH_PRIOR – 从结果集的当前游标位置向上进行提取操作。

  • mode(输入)

    提取模式,取值如下:

    • DCI_DEFAULT:缺省模式

    • DCI_THREADED:多线程模式

返回值:

如果执行成功,但是在提取结果集时发生警告性的错误(字符串截断、转换溢出等),那么返回 DCI_SUCCESS_WITH_INFO,如果执行成功,但是结果集返回的行数小于 iters 参数所指定的行数,那么返回 DCI_NO_DATA,其它正常情况下返回 DCI_SUCCESS,执行出错则返回 DCI_ERROR。

注释:

当函数返回 DCI_NO_DATA 时,并不是表示没有结果集返回,而是返回的结果集行数小于 iters 参数指定的行数,并且结果集游标已经到达末尾。可以调用 DCIAttrGet 函数查看属性 DCI_ATTR_ROW_COUNT 的描述来获取结果集中总共被提取的行数。

2.17. DCIStmtFetch2

函数原型:

sword   DCIStmtFetch2(DCIStmt       *stmtp,
                      DCIError      *errhp,
                      ub4           nrows,
                      ub2           orientation,
                      sb4           fetchOffset,
                      ub4           mode)

功能描述:

获取 SQL 生成的结果集中的行集。当执行一条查询以后,可以多次调用该函数来提取结果集中的数据行,直至该函数返回 DCI_NO_DATA,说明已获得结果集中全部的数据行。

参数说明:

  • stmtp(输入)

    用来提取结果集的语句句柄。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • nrows(输入)

    一次操作需要获取的行数。

  • orientation(输入)

    行集提取的方式,可以有以下几种方式:

    • DCI_DEFAULT – 同DCI_FETCH_NEXT,从当前游标位置向下进行提取操作

    • DCI_FETCH_NEXT – 从当前游标位置向下进行提取操作。

    • DCI_FETCH_FIRST – 从结果集的第一行开始向下进行提取操作。

    • DCI_FETCH_LAST – 从结果集的最后一行开始向下提取操作。

    • DCI_FETCH_PRIOR – 从结果集的当前游标位置向上进行提取操作。

    • DCI_FETCH_ABSOLUTE – 根据fetchoffset变量指定的绝对位置获取指定的行。

    • DCI_FETCH_RELATIVE – 根据fetchoffset变量指定的相对位置获取指定的行。

  • fetchoffset(输入)

    配合orientation变量使用的位移量,用于指定当前行的位置。

  • mode(输入)

    提取模式,取值如下:

    • DCI_DEFAULT:缺省模式

    • DCI_THREADED:多线程模式

返回值:

如果执行成功,但是在提取结果集时发生警告性的错误(字符串截断、转换溢出等),那么返回 DCI_SUCCESS_WITH_INFO,如果执行成功,但是结果集返回的行数小于 iters 参数所指定的行数,那么返回 DCI_NO_DATA,其它正常情况下返回 DCI_SUCCESS,执行出错则返回 DCI_ERROR。

注释:

当函数返回 DCI_NO_DATA 时,并不是表示没有结果集返回,而是返回的结果集行数小于 iters 参数指定的行数,并且结果集游标已经到达末尾。可以调用 DCIAttrGet 函数查看属性 DCI_ATTR_ROW_COUNT 的描述来获取结果集中总共被提取的行数。

2.18. DCITransStart

函数原型:

sword   DCITransStart(DCISvcCtx     *svchp,
                      DCIError      *errhp,
                      uword         timeout,
                      ub4           flags)

功能描述:

开启事务。

参数说明:

  • svchp(输入)

    要提交的上下文句柄。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • timeout

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

  • flags

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.19. DCITransCommit

函数原型:

sword   DCITransCommit(DCISvcCtx    *svchp,
                       DCIError     *errhp,
                       ub4          flags)

功能描述:

提交(commit)SQL 的执行动作。

参数说明:

  • svchp(输入)

    要提交的上下文句柄。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • flags

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

需要注意的是,如果当前上下文句柄所属的环境句柄被分配了多个语句句柄,那么这种提交操作将会对所有的语句句柄产生影响。

2.20. DCITransRollback

函数原型:

sword   DCITransRollback(DCISvcCtx  *svchp,
                         DCIError   *errhp,
                         ub4        flags)

功能描述:

回滚(rollback)SQL 的执行动作。

参数说明:

  • svchp(输入)

    要回滚的上下文句柄。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • flags

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

需要注意的是,如果当前上下文句柄所属的环境句柄被分配了多个语句句柄,那么这种提交操作将会对所有的语句句柄产生影响。

2.21. DCIBindByName

函数原型:

sword   DCIBindByName(DCIStmt       *stmtp,
                      DCIBind       **bindp,
                      DCIError      *errhp,
                      CONST DciText *placeholder,
                      sb4           placeh_len,
                      dvoid         *valuep,
                      sb4           value_sz,
                      ub2           dty,
                      dvoid         *indp,
                      ub2           *alenp,
                      ub2           *rcodep,
                      ub4           maxarr_len,
                      ub4           *curelep,
                      ub4           mode)

功能描述:

按参数名称绑定 SQL 语句中的参数。

参数说明:

  • stmtp(输入)

    绑定影响的语句句柄。

  • bindp(输出)

    输出的绑定信息句柄。可以通过该句柄调用 DCIBindArrayOfStruct 函数来设定该参数每行的间隔长度。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • placeholder(输入)

    绑定的参数名称。

  • placeh_len(输入)

    参数名称的长度。

  • valuep(输入)

    参数值缓冲区指针。

  • value_sz(输入)

    参数类型单个值的大小。

  • dty(输入)

    参数的数据类型。请参看DCI数据类型介绍。

  • indp(输入)

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

  • alenp(输入)

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

  • rcodep(输入)

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

  • maxarr_len(输入)

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

  • curelep(输入)

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

  • mode(输入)

    绑定模式,取值如下:

    • DCI_DEFAULT:缺省模式

    • DCI_THREADED:多线程模式

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

在 SQL 语句中使用冒号+参数名(:NAME)表示一个待绑定的参数,绑定动作需要在 SQL 语句的准备之后,执行之前进行。需要注意的是,如果在执行的时候,iters 参数的数值必须大于 1,并且没有显式调用 DCIBindArrayOfStruct 函数指定每个参数值的间隔大小,那么参数间隔就由 value_sz 参数的数值来决定。

2.22. DCIBindByPos

函数原型:

sword   DCIBindByPos(DCIStmt        *stmtp,
                     DCIBind        **bindp,
                     DCIError       *errhp,
                     ub4            position,
                     dvoid          *valuep,
                     sb4            value_sz,
                     ub2            dty,
                     dvoid          *indp,
                     ub2            *alenp,
                     ub2            *rcodep,
                     ub4            maxarr_len,
                     ub4            *curelep,
                     ub4            mode)

功能描述:

按参数在 SQL 语句中出现的位置进行绑定。

参数说明:

  • stmtp(输入)

    绑定影响的语句句柄。

  • bindp(输出)

    输出的绑定信息句柄。可以通过该句柄调用 DCIBindArrayOfStruct 函数来设定该参数每行的间隔长度。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • position(输入)

    参数在 SQL 中出现的位置,从 1 开始记数。

  • valuep(输入)

    参数值缓冲区指针。

  • value_sz(输入)

    参数类型单个值的大小。

  • dty(输入)

    参数的数据类型。请参看 DCI 数据类型介绍。

  • indp(输入)

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

  • alenp(输入)

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

  • rcodep(输入)

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

  • maxarr_len(输入)

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

  • curelep(输入)

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

  • mode(输入)

    绑定模式,取值如下:

    • DCI_DEFAULT:缺省模式

    • DCI_THREADED:多线程模式

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

在 SQL 语句中使用冒号+参数名(:NAME)表示一个待绑定的参数,绑定动作需要在 SQL 语句的准备之后,执行之前进行。该函数在绑定参数时,将忽略参数的名称,按它们在 SQL 中的位置一对一的绑定。需要注意的是,如果在执行的时候,iters 参数的数值大于 1 并且没有显式调用 DCIBindArrayOfStruct 函数指定每个参数值的间隔大小,那么参数间隔就由 value_sz 参数的数值来决定。

2.23. DCIBindArrayOfStruct

函数原型:

sword   DCIBindArrayOfStruct(DCIBind    *bindp,
                             DCIError   *errhp,
                             ub4        pvskip,
                             ub4        indskip,
                             ub4        alskip,
                             ub4        rcskip)

功能描述:

指定参数绑定时,每个参数项中值的间隔大小,以字节计算。

参数说明:

  • bindp(输入)

    参数绑定结构指针,它来自 DCIBindByName 或 DCIBindByPos 的参数绑定函数输出。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • pvskip(输入)

    参数值下一个值的间隔长度。在多行绑定时,可以通过指定该参数来找到下一行值所在的位置。

  • indskip(输入)

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

  • alskip(输入)

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

  • rcskip(输入)

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

该函数需要在调用执行动作之前调用。

2.24. DCIDefineByPos

函数原型:

sword   DCIDefineByPos(DCIStmt      *stmtp,
                       DCIDefine    **defnp,
                       DCIError     *errhp,
                       ub4          position,
                       dvoid        *valuep,
                       sb4          value_sz,
                       ub2          dty,
                       dvoid        *indp,
                       ub2          *rlenp,
                       ub2          *rcodep,
                       ub4          mode)

功能描述:

按位置来指定查询返回结果集中每一列的存储空间。

参数说明:

  • stmtp(输入)

    要绑定的语句句柄。

  • defnp(输出)

    绑定结构输出指针,可以通过使用该参数调用 DCIDefineArrayOfStruct 来指定该列每个值之间的间隔大小。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • position(输入)

    绑定结果集中的列所在位置,从 1 开始计数。

  • valuep(输入)

    存放获取值的缓冲区指针。

  • value_sz(输入)

    单个该类型值的大小。

  • dty(输入)

    绑定的数据类型。

  • indp(输入)

    指示符缓冲区,如果结果集中存在 NULL 值,那么 DCI 会回填该缓冲区,把对应的位置置为 -1,其它情况下置 0;如果在绑定的时候,未设置该指示符缓冲区,但是获取的结果中又存在 NULL 值,结果集提取时会返回 DCI_ERROR 的错误。

  • rlenp(输入)

    返回值长度指示缓冲区,如果返回值未发生截断,那么该缓冲区中的值就是实际的返回值长度;如果返回值在获取的时候发生了截断,那么该缓冲区的值就是未截断以前的长度;如果返回值是空值,该缓冲区的值将被置为 0。

  • rcodep(输入)

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

  • mode(输入)

    绑定模式,取值如下:

    • DCI_DEFAULT:缺省模式

    • DCI_THREADED:多线程模式

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

需要注意的是,该函数必须在 DCIStmtPrepare 之后调用,但是在调用 DCIStmtFetch 之前,可以随时动态的改变绑定信息。

2.25. DCIDefineArrayOfStruct

函数原型:

sword   DCIDefineArrayOfStruct (DCIDefine   *defnp,
                                DCIError    *errhp,
                                ub4         pvskip,
                                ub4         indskip,
                                ub4         rlskip,
                                ub4         rcskip)

功能描述:

用来指定行集中每一列中每行值存储位置间隔的大小,以字节计算。

参数说明:

  • defnp(输入)

    绑定结构指针,该参数是通过调用 DCIDefineByPos 后输出的。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • pvskip(输入)

    每个值间隔的大小,在一次性返回多行时,DCI 会跟据这个大小来回填每一行的值。

  • indskip(输入)

    空值指示符的间隔大小。

  • rlskip(输入)

    返回值长度指示符的间隔大小。

  • rcskip

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

需要注意的是,如果要求一次性返回多行时,没有用该函数指定每行值的间隔大小,那么将会按 DCIDefineByPos 函数中 value_sz 参数的数值来作来默认的间隔大小。

2.26. DCIDescriptorAlloc

函数原型:

sword   DCIDescriptorAlloc(CONST dvoid      *parenth,
                           dvoid            **descpp,
                           CONST ub4        type,
                           CONST size_t     xtramem_sz,
                           dvoid            **usrmempp)

功能描述:

为描述符分配存储空间。

参数说明:

  • parenth(输入)

    环境句柄指针。

  • descpp(输出)

    存储描述符指针。

  • type(输入)

    描述符类型,目前支持:

    DCI_DTYPE_LOB – 大字段描述。

    DCI_DTYPE_PARAM – 参数描述。

    DCI_DTYPE_DATE – 日期描述。

    DCI_DTYPE_TIME – 时间描述。

    DCI_DTYPE_TIME_TZ – 带时区的时间描述。

    DCI_DTYPE_TIMESTAMP – 时间戳描述。

    DCI_DTYPE_TIMESTAMP_LTZ – 带本地时区的时间戳描述。

    DCI_DTYPE_TIMESTAMP_TZ – 带时区的时间戳描述。

    DCI_DTYPE_INTERVAL_DS – 时间间隔日和秒描述。

    DCI_DTYPE_INTERVAL_YM – 时间间隔年和月描述。

  • xtramem_sz

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

  • usrmempp

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

通过该函数生成的描述符句柄需要通过调用 DCIDescriptorFree 来释放。

2.27. DCIDescriptorFree

函数原型:

sword   DCIDescriptorFree(dvoid         *descp,
                          CONST ub4     type)

功能描述:

释放 DCIDescriptorAlloc 生成的描述符。

参数说明:

  • descp(输入)

    要释放的描述符指针。

  • type(输入)

    描述符类型,目前支持:

    DCI_DTYPE_LOB – 大字段描述。

    DCI_DTYPE_PARAM – 参数描述。

    DCI_DTYPE_DATE – 日期描述。

    DCI_DTYPE_TIME – 时间描述。

    DCI_DTYPE_TIME_TZ – 带时区的时间描述。

    DCI_DTYPE_TIMESTAMP – 时间戳描述。

    DCI_DTYPE_TIMESTAMP_LTZ – 带本地时区的时间戳描述。

    DCI_DTYPE_TIMESTAMP_TZ – 带时区的时间戳描述。

    DCI_DTYPE_INTERVAL_DS – 时间间隔日和秒描述。

    DCI_DTYPE_INTERVAL_YM – 时间间隔年和月描述。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

该函数只能释放通过 DCIDescriptorAlloc 生成的描述符。

2.28. DCILobAssign

函数原型:

sword   DCILobAssign(DCIEnv                 *envhp,
                     DCIError               *errhp,
                     const DCILobLocator    *src_locp,
                     DCILobLocator          **dst_lobcpp)

功能描述:

将一个LobLocator声明给另一个LobLocator,该函数作用后,这两个LobLocator指向了同一个Lob,但LobLocator内部是拷贝,不是引用。

参数说明:

  • envhp(输入)

    环境句柄指针。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • src_locp(输入)

    有效的非空LobLocator指针,将该LobLocator的值付给dst_loccp。

  • dst_lobcpp(输出)

    有效的非空指向LobLocator地址的指针, src_locp的LobLocator的值被赋给dst_locpp指向的LobLocator。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.29. DCILobAppend

函数原型:

sword   DCILobAppend(DCISvcCtx          *svchp,
                     DCIError           *errhp,
                     DCILobLocator      *dst_locp,
                     DCILobLocator      *src_locp)

功能描述:

将一个LobLocator指向的Lob值追加到另一个LobLocator指向的Lob值。

参数说明:

  • svchp(输入)

    上下文句柄指针。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • dst_locp(输出)

    非空的目的LobLocator指针,该指针的Lob类型必须与src_locp的Lob类型相同,且追加后,dst_locp指向的Lob值不能超出Kingbase允许的最大值,即2GB。

  • src_locp(输入)

    非空的源LobLocator指针。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.30. DCILobCopy

函数原型:

sword   DCILobCopy(DCISvcCtx            *svchp,
                   DCIError             *errhp,
                   DCILobLocator        *dst_locp,
                   DCILobLocator        *src_locp,
                   oraub8               amount,
                   oraub8               dst_offset,
                   oraub8               src_offset)

功能描述:

将一个LobLocator的Lob值的一部分,拷贝到另一个LobLocator,Lob类型必须相同。

参数说明:

  • svchp(输入)

    上下文句柄指针。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • dst_locp(输出)

    非空有效的目的LobLocator指针。

  • src_locp(输入)

    非空有效的源LobLocator指针。

  • amount(输入)

    从src_locp的指向的Lob值拷贝的字节长度。

  • dst_offset(输入)

    dst_locp指向的LobLocator的偏移量(从头算起),如果dst_offset超过了Lob本身的长度,则LobLength到dst_offset这部分被写入空格(Clob)或者0(Blob)。

  • src_offset(输入)

    src_locp指向的LobLocator的偏移量(从头算起)。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.31. DCILobEnableBuffering

函数原型:

sword   DCILobEnableBuffering(DCISvcCtx     *svchp,
                              DCIError      *errhp,
                              DCILobLocator *locp)

功能描述:

开启LobLacotor缓存功能。已经开启了缓存功能的LobLocator,再次开启的则返回错误。

参数说明:

  • svchp(输入)

    上下文句柄指针。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • locp(输入)

    有效非空的LobLocator指针。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.32. DCILobDisableBuffering

函数原型:

sword   DCILobDisableBuffering(DCISvcCtx        *svchp,
                               DCIError         *errhp,
                               DCILobLocator    *locp)

功能描述:

关闭Lob缓存功能,关闭缓存功能,并不能显式的更新LobLocator,必须显式的调用DCILobFlushBuffer()。

参数说明:

  • svchp(输入)

    上下文句柄指针。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • locp(输入)

    有效非空的LobLocator指针。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.33. DCILobErase

函数原型:

sword   DCILobErase(DCISvcCtx       *svchp,
                    DCIError        *errhp,
                    DCILobLocator   *locp,
                    ub4             *amount,
                    ub4             offset)

功能描述:

从LobLocator指向Lob的某个偏移开始擦写一定的字节数; 对于Blob,擦写成0,对于Clob,则擦写成空格。

参数说明:

  • svchp(输入)

    上下文句柄指针。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • locp(输入)

    有效非空的LobLocator指针。

  • amount(输入输出)

    输入时,擦写的字节长度;返回了实际擦写的长度,因为实际可擦写的字节长度可能不足,此时返回实际的擦写长度。

  • offset(输入)

    从LobLocator指向lob的偏移offset开始。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.34. DCILobFlushBuffer

函数原型:

sword   DCILobFlushBuffer(DCISvcCtx         *svchp,
                          DCIError          *errhp,
                          DCILobLocator     *locp,
                          ub4               flag)

功能描述:

将缓存Buffer中的值写入Lob字段。必须已经开启了Lob缓存功能,才可以使用该函数。

参数说明:

  • svchp(输入)

    上下文句柄指针。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • locp(输入)

    有效非空的LobLocator指针。

  • flag(输入)

    若传入的为DCI_LOB_BUFFER_FREE则Lob的buffer被释放掉。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.35. DCILobIsEqual

函数原型:

sword   DCILobIsEqual(DCIEnv                *envhp,
                      const DCILobLocator   *x,
                      const DCILobLocator   *y,
                      boolean               *is_equal)

功能描述:

比较两个LobLocator指向的Lob是否相等,只有他们引用的是同一Lob才相等,若其中的LobLocator有为空的,则认为不等。

参数说明:

  • envhp(输入)

    环境句柄指针。

  • x(输入)

    有效非空的LobLocator指针。

  • y(输入)

    有效非空的LobLocator指针。

  • is_equal(输出)

    如果相等,则返回TRUE,否则返回FALSE。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.36. DCILobLocatorIsInit

函数原型:

sword   DCILobLocatorIsInit(DCIEnv              *envhp,
                            DCIError            *errhp,
                            const DCILobLocator *locp,
                            boolean             *is_initialized)

功能描述:

LobLocator是否被初始化。

参数说明:

  • envhp(输入)

    环境句柄指针。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • locp(输入)

    有效非空的LobLocator指针。

  • is_initialized(输出)

    如果已经初始化,则返回TRUE,否则返回FALSE。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.37. DCILobCharSetForm

函数原型:

sword   DCILobCharSetForm(DCIEnv                *envhp,
                          DCIError              *errhp,
                          const DCILobLocator   *locp,
                          ub1                   *csfrm)

功能描述:

返回Loblocator引用的字符集格式。

参数说明:

  • envhp(输入)

    环境句柄指针。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • locp(输入)

    有效非空的指向LobLocator的指针。

  • csfrm (输出)

    返回的LobLocator的字符集格式:

    • SQLCS_IMPLICIT - 默认的字符集格式

    • SQLCS_NCHAR - NCHAR字符集ID

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.38. DCILobCharSetId

函数原型:

sword   DCILobCharSetId(DCIEnv                  *envhp,
                        DCIError                *errhp,
                        const DCILobLocator     *locp,
                        ub2                     *csid)

功能描述:

返回Loblocator引用的字符集ID。

参数说明:

  • envhp(输入)

    环境句柄指针。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • locp(输入)

    有效非空的指向LobLocator的指针。

  • csid (输出)

    返回的LobLocator的字符集ID,Blob返回的字符集ID为0,因为Binary数据没有字符集信息。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.39. DCILobClose

函数原型:

sword   DCILobClose(DCISvcCtx      *svchp,
                    DCIError       *errhp,
                    DCILobLocator  *locp )

功能描述:

关闭已经打开的大对象

参数说明:

  • svchp(输入)

    服务上下文句柄

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • locp(输入/输出)

    有效非空的指向LobLocator的指针。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.40. DCILobCreateTemporary

函数原型:

sword   DCILobCreateTemporary(DCISvcCtx          *svchp,
                              DCIError           *errhp,
                              DCILobLocator      *locp,
                              ub2                csid,
                              ub1                csfrm,
                              ub1                lobtype,
                              boolean            cache,
                              DCIDuration        duration)

功能描述:

创建一个临时大对象。

参数说明:

  • svchp(输入)

    服务上下文句柄

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • locp(输入/输出)

    有效非空的指向LobLocator的指针。

  • csid (输入)

    LobLocator的字符集ID,请传入DCI_DEFAULT。

  • csfrm (输入)

    大对象的缓冲区字符集。仅用于与Oracle兼容,不支持SQLCS_NCHAR。

  • lobtype (输入)

    大对象的类型。支持DCI_TEMP_BLOB或DCI_TEMP_CLOB。

  • cache (输入)

    仅用于与Oracle兼容。

  • duration (输入)

    仅用于与Oracle兼容。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.41. DCILobFreeTemporary

函数原型:

sword   DCILobFreeTemporary( DCISvcCtx         *svchp,
                             DCIError          *errhp,
                             DCILobLocator     *locp)

功能描述:

释放一个临时大对象。

参数说明:

  • svchp(输入)

    服务上下文句柄

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • locp(输入/输出)

    有效非空的指向LobLocator的指针。该Locator指向的大对象在数据库中将被释放。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.42. DCILobIsTemporary

函数原型:

sword DCILobIsTemporary(DCIEnv            *envhp,
                        DCIError          *errhp,
                        DCILobLocator     *locp,
                        boolean           *is_temporary)

功能描述:

判断一个大对象描述符指向的大对象是不是临时大对象

参数说明:

  • envhp(输入)

    环境句柄

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • locp(输入)

    有效非空的指向LobLocator的指针。

  • is_temporary(输出)

    TRUE表示是临时大对象,FALSE表示不是临时大对象。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.43. DCILobIsOpen

函数原型:

sword DCILobIsOpen(DCISvcCtx        *svchp,
                   DCIError         *errhp,
                   DCILobLocator    *locp,
                   boolean          *flag )

功能描述:

判断一个大对象描述符是否指向一个已经打开的大对象

参数说明:

  • svchp(输入)

    服务上下文句柄

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • locp(输入)

    有效非空的指向LobLocator的指针。

  • flag(输出)

    TRUE表示大对象已经打开,FALSE表示没有打开。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.44. DCILobTrim

函数原型:

sword   DCILobTrim(DCISvcCtx        *svchp,
                   DCIError         *errhp,
                   DCILobLocator    *locp,
                   ub4              newlen)

功能描述:

截断Lob的值。

参数说明:

  • svchp(输入)

    上下文句柄指针。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • locp(输入)

    指向LobLocator的指针, 该Lob的值将被截断。

  • newlen(输入)

    截断后的长度,该值必须小于被截断前的长度,按字节计算。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.45. DCILobGetLength

函数原型:

sword   DCILobGetLength (DCISvcCtx      *svchp,
                         DCIError       *errhp,
                         DCILobLocator  *locp,
                         ub4            *lenp)

功能描述:

返回大字段的大小,按字节计算。

参数说明:

  • svchp(输入)

    上下文句柄指针。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • locp(输入)

    存储大字段描述符指针。

  • lenp(输出)

    返回的大字段长度,按字节计算。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.46. DCILobOpen

函数原型:

sword   DCILobOpen(DCISvcCtx        *svchp,
                   DCIError         *errhp,
                   DCILobLocator    *locp,
                   ub1               mode )

功能描述:

打开一个大对象

参数说明:

  • svchp(输入)

    上下文句柄指针。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • locp(输入/输出)

    有效非空的指向LobLocator的指针

  • mode(输入)

    DCI_LOB_READONLY / DCI_LOB_READWRITE.

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.47. DCILobRead

函数原型:

sword   DCILobRead(DCISvcCtx        *svchp,
                 DCIError           *errhp,
                 DCILobLocator      *locp,
                 ub4                *amtp,
                 ub4                offset,
                 dvoid              *bufp,
                 ub4                bufl,
                 dvoid              *ctxp,
                 sb4                (*cbfp)(dvoid *ctxp, CONST dvoid *bufp,
                                    ub4 len, ub1 piece),
                 ub2                csid,
                 ub1                csfrm)

功能描述:

读取某个大字段中指定长度的内容。

参数说明:

  • svchp(输入)

    上下文句柄指针。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • locp(输入)

    存储大字段描述符指针。

  • amtp(输入/输出)

    该参数为输入输出参数,当调用函数时,该参数表明想读取的字节数,当函数执行完以后,DCI 会回填实际读到的字节数。

  • offset(输入)

    从大字段开始位置到当前位置的偏移量,以字节为单位;offset取值从1开始。

  • bufp(输入)

    存放读到数据的缓冲区指针。

  • bufl(输入)

    bufp 参数指向的缓冲区的大小。

  • ctxp

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

  • cbfp

    注册的回调,可以在逐段读取中为每段调用。如果是NULL,则为每块返回 OCI_NEED_DATA。

    回调函数必须返回OCI_CONTINUE才能继续读取。如果返回任何其他错误代码,则将终止LOB读取。回调采用以下参数:

    • ctxp

      保留参数,目前不使用(仅用于和 Oracle 保持兼容)

    • bufp(输入/输出)

      片段的缓冲区指针。

    • len(输入)

      当前片段在bufp中的长度 (以字节为单位)。

    • piece(输入)

      哪一块:OCI_FIRST_PIECE,OCI_NEXT_PIECE 或 OCI_LAST_PIECE

  • csid

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

  • csfrm

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

返回值:

如果执行成功,在还有数据未读取完的情况下,返回 DCI_NEED_DATA,如果数据都已经读完则返回 DCI_SUCCESS;执行失败则返回 DCI_ERROR。

注释:

目前只支持连续的只向前读操作。

2.48. DCILobWrite

函数原型:

sword   DCILobWrite(DCISvcCtx           *svchp,
                    DCIError            *errhp,
                    DCILobLocator       *locp,
                    ub4                 *amtp,
                    ub4                 offset,
                    dvoid               *bufp,
                    ub4                 buflen,
                    ub1                 piece,
                    dvoid               *ctxp,
                    sb4                 (*cbfp)(dvoid *ctxp, dvoid *bufp,
                                        ub4 *len, ub1 *piece),
                    ub2                 csid,
                    ub1                 csfrm)

功能描述:

连续的写入内容到一个大字段存储描述符中。

参数说明:

  • svchp(输入)

    上下文句柄指针。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • locp(输入)

    存储大字段描述符指针。

  • amtp(输入/输出)

    该参数为输入输出参数,当调用函数时,该参数表明想写入的字节数,当函数执行完以后,DCI 会回填实际写入的字节数。

  • offset(输入)

    从大字段开始位置到当前位置的偏移量,以字节为单位;offset取值从1开始。

  • bufp(输入)

    存放要写的数据缓冲区指针。

  • bufl(输入)

    bufp 参数指向的缓冲区的大小。

  • piece

    正在写入缓冲区的哪一部分。此参数的默认值为OCI_ONE_PIECE,表示将缓冲区写入单个块中。对于分段或回调模式可使用这些值:OCI_FIRST_PIECE,OCI_NEXT_PIECE 和 OCI_LAST_PIECE。

  • ctxp

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

  • cbfp

    注册的回调,可以在逐段写入中为每段调用。如果是NULL,则使用标准轮询方法。

    回调函数必须返回OCI_CONTINUE才能继续写入。如果返回任何其他错误代码,则LOB写入将终止。回调采用以下参数:

    • ctxp

      保留参数,目前不使用(仅用于和 Oracle 保持兼容)

    • bufp(输入/输出)

      片段的缓冲区指针,这与传递给OCILobWrite()例程的bufp输入相同。

    • len(输入/输出)

      (输入) 缓冲区中数据的长度,(输出) bufp中当前数据的长度 (以字节为单位)。

    • piece(输出)

      哪一块:OCI_NEXT_PIECE 或 OCI_LAST_PIECE

  • csid

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

  • csfrm

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

你可以调用 DCIStmtFetch 来移动游标,以便对其它行的大字段进行写入操作。

2.49. DCINumberAdd

函数原型:

sword   DCINumberAdd(DCIError           *err,
                     const DCINumber    *number1,
                     const DCINumber    *number2,
                     DCINumber          *result )

功能描述:

计算两个数的和。

参数说明:

  • err(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • number1(输入)

    被加数

  • number2(输入)

    加数

  • result(输出)

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

number1,number2为空时,返回DCI_ERROR。

2.50. DCINumberAssign

函数原型:

sword   DCINumberAssign(DCIError            *err,
                        const DCINumber     *from,
                        DCINumber           *to )

功能描述:

对Number进行赋值。

参数说明:

  • err(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • from(输入)

    源数

  • to(输出)

    目的数

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

from, to为空时,返回DCI_ERROR。

2.51. DCINumberDiv

函数原型:

sword   DCINumberDiv(DCIError           *err,
                     const DCINumber    *number1,
                     const DCINumber    *number2,
                     DCINumber          *result )

功能描述:

计算两个数的商。

参数说明:

  • err(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • number1(输入)

    分子

  • number2(输入)

    分母

  • result(输出)

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

number1,number2为空时,或出现除0错误时,返回DCI_ERROR。

2.52. DCINumberIsInt

函数原型:

sword   DCINumberIsInt(DCIError           *err,
                       const DCINumber    *number,
                       boolean            *result )

功能描述:

判断一个数是不是整数。

参数说明:

  • err(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • number(输入)

    待判断数

  • result(输出)

    TRUE表示是整数,FALSE表示不是

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

number、result为空时,返回DCI_ERROR。

2.53. DCINumberMod

函数原型:

sword   DCINumberMod(DCIError           *err,
                     const DCINumber    *number1,
                     const DCINumber    *number2,
                     DCINumber          *result )

功能描述:

计算两个数的余数。

参数说明:

  • err(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • number1(输入)

    分子

  • number2(输入)

    分母

  • result(输出)

    结果

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

number1,number2为空时,或者出现除0错误时,返回DCI_ERROR。

2.54. DCINumberMul

函数原型:

sword   DCINumberMul(DCIError           *err,
                     const DCINumber    *number1,
                     const DCINumber    *number2,
                     DCINumber          *result )

功能描述:

计算两个数的积。

参数说明:

  • err(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • number1(输入)

    被乘数

  • number2(输入)

    乘数

  • result(输出)

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

number1,number2为空时,返回DCI_ERROR。

2.55. DCIDescribeAny

函数原型:

sword   DCIDescribeAny (DCISvcCtx           *svchp,
                        DCIError            *errhp,
                        dvoid               *objptr,
                        ub4                 objnm_len,
                        ub1                 objptr_typ,
                        ub1                 info_level,
                        ub1                 objtyp,
                        DCIDescribe         *dschp)

功能描述:

描述某个数据库对象,得到其内部构造的详细信息。

参数说明:

  • svchp(输入)

    上下文句柄指针。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • objptr(输入)

    要被描述的对象指针,目前只支持字符串类型指针。

  • objnm_len(输入)

    objptr 参数中字符串的长度。

  • objptr_typ(输入)

    objptr 指针类型,目前只支持 DCI_OTYPE_NAME – 对象名称类型指针。

  • info_level

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)

  • objtyp(输入)

    objptr 参数所指的对象类型,可以为下面几种对象:

    • DCI_PTYPE_TABLE – 表

    • DCI_PTYPE_PROC – 过程

    • DCI_PTYPE_FUNC – 函数

    • DCI_PTYPE_PKG – 对象包

  • dschp(输入)

    一个描述符句柄,该句柄可以通过使用 DCI_HTYPE_DESCRIBE 作为参数调用 DCIHandleAlloc 分配得到。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

调用该函数对某个对象进行描述以后,需要结合调用 DCIParamGet 和 DCIAttrGet 来获取描述后的信息。

2.56. DCIParamGet

函数原型:

sword   DCIParamGet(CONST dvoid     *hndlp,
                    ub4             htype,
                    DCIError        *errhp,
                    dvoid           **parmdpp,
                    ub4             pos)

功能描述:

返回描述句柄或语句句柄中的根据位置指定的参数描述符。

参数说明:

  • hndlp(输入)

    一个存在描述信息的句柄。

  • htype(输入)

    hndlp参数句柄的类型,支持以下两种类型:

    • DCI_HTYPE_STMT – 语句句柄

    • DCI_DTYPE_PARAM – 参数句柄

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • parmdpp(输出)

    输出的描述符句柄,通过该句柄调用 DCIAttrGet 函数就可以得到指定位置上的描述信息。

  • pos(输入)

    要获取描述符上指定位置的描述信息。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.57. DCIAttrSet

函数原型:

sword   DCIAttrSet(dvoid                *trgthndlp,
                   ub4                  trghndltyp,
                   dvoid                *attributep,
                   ub4                  size,
                   ub4                  attrtype,
                   DCIError             *errhp)

功能描述:

设置句柄上的属性值。

参数说明:

  • trgthndlp(输入)

    需要设置属性的句柄指针。

  • trghndltyp(输入)

    trgthndlp参数句柄的类型,可以是以下几种类型:

    • DCI_HTYPE_SVCCTX 上下文句柄。

    • DCI_HTYPE_SESSION 连接信息句柄。

    • DCI_HTYPE_STMT 语句句柄。

    • DCI_HTYPE_DIRPATH_CTX 直接文件操作上下文。

    • DCI_DTYPE_PARAM 参数信息句柄。

  • attributep(输入)

    要设置的属性值指针,下面是在各种属性的情况下,数据值的类型:

    • DCI_HTYPE_SVCCTX

      • DCI_ATTR_SERVER – DCIServer 结构句柄(连接句柄)

      • DCI_ATTR_SESSION – DCISession 结构句柄(连接信息句柄)

    • DCI_HTYPE_SESSION

      • DCI_ATTR_USERNAME – 字符串指针(char*)

      • DCI_ATTR_PASSWORD – 字符串指针(char*)

    • DCI_HTYPE_STMT

      • DCI_ATTR_PREFETCH_ROWS – 无符号整形指针(ub4*)

    • DCI_HTYPE_DIRPATH_CTX

      • DCI_ATTR_BUF_SIZE – 无符号整形指针(ub4*)

      • DCI_ATTR_NAME – 字符串指针(char*)

      • DCI_ATTR_NUM_COLS – 无符号短整形指针(ub2*)

      • DCI_ATTR_SCHEMA_NAME – 字符串指针(char*)

      • DCI_ATTR_DATEFORMAT – 字符串指针(char*),如:YYYY-MM-DD

      • DCI_ATTR_DIRPATH_INPUT – 无符号单字节整形指针(ub1*),目前只支持DCI_DIRPATH_INPUT_STREAM和DCI_DIRPATH_INPUT_TEXT

    • DCI_DTYPE_PARAM

      • DCI_ATTR_NAME –字符串指针(char*)

      • DCI_ATTR_DATA_TYPE –无符号短整形指针(ub2*)

      • DCI_ATTR_DATA_SIZE –无符号整形指针(ub4*)

      • DCI_ATTR_DATEFORMAT –字符串指针(char*),如:YYYY-MM-DD

      • DCI_ATTR_PRECISION –无符号单字节整形指针(ub1*)

      • DCI_ATTR_SCALE –无符号单字节整形指针(ub1*)

  • size(输入)

    attributep 参数的大小,如果 attributep 参数指针是一个字符串类型指针,那么 size 就是该字符串的实际长度;如果 attributep 参数是其它类型指针,则忽略该参数。

  • attrtype(输入)

    要设置的句柄属性。不同类型的句柄有着不同的属性:

    • DCI_HTYPE_SVCCTX

      • DCI_ATTR_SERVER – 在上下文句柄上附加一个连接句柄

      • DCI_ATTR_SESSION – 在上下文句柄上附加一个连接信息句柄

    • DCI_HTYPE_SESSION

      • DCI_ATTR_USERNAME – 在连接信息句柄上设置登录的用户名

      • DCI_ATTR_PASSWORD – 在连接信息句柄上设置登录的口令

    • DCI_HTYPE_STMT

      • DCI_ATTR_PREFETCH_ROWS – 在语句句柄上设置预取的结果集行数

    • DCI_HTYPE_DIRPATH_CTX

      • DCI_ATTR_BUF_SIZE – 直接文件操作时缓冲区的大小

      • DCI_ATTR_NAME – 直接文件操作时针对的表名

      • DCI_ATTR_NUM_COLS – 直接文件操作时针对的表的列数

      • DCI_ATTR_SCHEMA_NAME – 直接文件操作时针对的表所在的模式名

      • DCI_ATTR_DATEFORMAT – 直接文件操作时日期格式表达式

      • DCI_ATTR_DIRPATH_INPUT – 直接文件操作时数据流的形式

    • DCI_DTYPE_PARAM

      • DCI_ATTR_NAME – 直接文件操作时设置列的名称

      • DCI_ATTR_DATA_TYPE – 直接文件操作时设置列的数据类型

      • DCI_ATTR_DATA_SIZE – 直接文件操作时设置列的数据类型大小,以字节计

      • DCI_ATTR_DATEFORMAT – 直接文件操作时设置的日期格式表达式

      • DCI_ATTR_PRECISION – 直接文件操作时设置列的精度

      • DCI_ATTR_SCALE – 直接文件操作时设置列的刻度

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.58. DCIAttrGet

函数原型:

sword   DCIAttrGet(CONST dvoid          *trgthndlp,
                   ub4                  trghndltyp,
                   dvoid                *attributep,
                   ub4                  *sizep,
                   ub4                  attrtype,
                   DCIError             *errhp)

功能描述:

获取句柄上的属性值。

参数说明:

  • trgthndlp(输入)

    要获取属性的句柄。

  • trghndltyp(输入)

    trgthndlp参数中的句柄类型,可以有以下几种类型:

    • DCI_DTYPE_PARAM – 参数句柄

    • DCI_HTYPE_STMT – 语句句柄

    • DCI_HTYPE_DESCRIBE – 描述符句柄

    • DCI_HTYPE_DIRPATH_CTX – 直接文件操作句柄

    • DCI_HTYPE_DIRPATH_COLUMN_ARRAY – 直接文件数据数组句柄

    • DCI_HTYPE_DIRPATH_STREAM – 直接文件数据流句柄

  • attributep(输出)

    存放输出属性的缓冲区。如果输入的属性为字符串,那么该参数值应是字符串指针的地址,应用应当及时的复制其值到自己定义的缓冲区中。

  • sizep(输出)

    存放输出属性大小的缓冲区,如果输出属性是字符串,那么它的值是字符串的实际长度,否则该大小是实际输出值的大小,按字节计算。

  • attrtype(输入)

    要获取的属性。不同类型的句柄有着不同的属性可以获取,请参照样例。

    下面是 attrtype 在不同的输入句柄上的属性取值:

    • DCI_DTYPE_PARAM

      • DCI_HTYPE_RESULT_COL_ATTR

        • DCI_ATTR_DATA_SIZE – 列的数据类型大小(ub2)

        • DCI_ATTR_DATA_TYPE – 列的数据类型(ub2)

        • DCI_ATTR_DISP_SIZE – 列的显示大小(ub2)

        • DCI_ATTR_NAME – 列名(char*)

        • DCI_ATTR_PRECISION – 列的精度(ub2)

        • DCI_ATTR_SCALE – 列的刻度(ub1)

        • DCI_ATTR_IS_NULL – 列是否允许为空(ub1)

      • DCI_PTYPE_TABLE

        • DCI_ATTR_OBJID – 表的ID号(ub4)

        • DCI_ATTR_NUM_COLS – 表中的列数(ub2)

        • DCI_ATTR_LIST_COLUMNS – 表中列信息的描述参数句柄(void*)

      • DCI_ATTR_LIST_COLUMNS

        • 同 DCI_HTYPE_RESULT_COL_ATTR 属性

      • DCI_PTYPE_PROC

        • DCI_ATTR_DATA_SIZE – 参数的数据类型大小(ub2)

        • DCI_ATTR_DATA_TYPE –参数的数据类型(ub2)

        • DCI_ATTR_DISP_SIZE –参数的显示大小(ub2)

        • DCI_ATTR_NAME –参数名(char*)

        • DCI_ATTR_PRECISION –参数的精度(ub1)

        • DCI_ATTR_SCALE –参数的刻度(ub1)

        • DCI_ATTR_NUM_PARAMS – 参数的个数(ub2)

        • DCI_ATTR_LIST_ARGUMENTS – 参数的描述参数句柄(void*)

      • DCI_PTYPE_FUNC

        • 同DCI_PTYPE_PROC

      • DCI_PTYPE_PKG – 包中信息的描述参数句柄(void*)

      • DCI_ATTR_LIST_SUBPROGRAMS

        • DCI_ATTR_LIST_ARGUMENTS – 参数的描述参数句柄(void*)

        • DCI_ATTR_NAME – 包中的过程名者是函数名(char*)

        • DCI_ATTR_PTYPE – 对象类型:DCI_PTYPE_PROC或DCI_PTYPE_FUNC

        • DCI_ATTR_NUM_PARAMS – 包中对象的个数(ub2)

      • DCI_PTYPE_LIST

        • DCI_ATTR_NAME – 直接文件操作时设置列的名称(char*)

        • DCI_ATTR_DATA_TYPE – 直接文件操作时设置列的数据类型(ub2)

        • DCI_ATTR_DATA_SIZE – 直接文件操作时设置列的数据类型大小(ub2)

        • DCI_ATTR_DATEFORMAT – 直接文件操作时设置的日期格式表达式(char*)

        • DCI_ATTR_PRECISION – 直接文件操作时设置列的精度(ub1)

        • DCI_ATTR_SCALE – 直接文件操作时设置列的刻度(ub1)

    • DCI_HTYPE_STMT

      • DCI_ATTR_PREFETCH_ROWS – 当前一次性返回结果集记录的行数(ub4)

      • DCI_ATTR_NUM_COLS – 结果集中列的个数(ub2)

      • DCI_ATTR_ROW_COUNT – 已经返回记录的总行数(ub4)

    • DCI_HTYPE_DESCRIBE

      • DCI_PTYPE_TABLE – 返回描述表中各列信息的参数句柄(void*)

      • DCI_PTYPE_PROC – 返回描述存储过程中参数的参数句柄(void*)

      • DCI_PTYPE_FUNC – 返回描述存储函数中参数的参数句柄(void*)

      • DCI_PTYPE_PKG – 返回描述包中信息的参数句柄(void*)

    • DCI_HTYPE_DIRPATH_CTX

      • DCI_ATTR_BUF_SIZE – 当前文件操作的缓冲区大小(ub4),默认是64K

      • DCI_ATTR_NAME – 当前操作的表名(char*)

      • DCI_ATTR_NUM_COLS – 当前操作的列数(ub2)

      • DCI_ATTR_NUM_ROWS – 当前允许一次性操作的行数(ub4)

      • DCI_ATTR_SCHEMA_NAME – 操作的表所在的模式名(char*)

      • DCI_ATTR_DATEFORMAT – 当前设置的时间日期格式表达式(char*)

      • DCI_ATTR_LIST_COLUMNS – 返回描述表中各列信息的参数句柄(void*)

      • DCI_ATTR_DIRPATH_INPUT – 当前数据流的类型,是文本还是二进制(ub1)

    • DCI_HTYPE_DIRPATH_COLUMN_ARRAY

      • DCI_ATTR_NUM_ROWS – 当前缓冲区允许一次性最大设置的记录行数(ub4)

      • DCI_ATTR_NUM_COLS – 当前缓冲区中的列数(ub2)

      • DCI_ATTR_ROW_COUNT – 转换成功的行数(ub4)

      • DCI_ATTR_COL_COUNT – 转换成功的列数(ub2)

    • DCI_HTYPE_DIRPATH_STREAM

      • DCI_ATTR_NUM_ROWS – 数据流中的行数(ub4)

      • DCI_ATTR_NUM_COLS – 数据流中的行数(ub2)

      • DCI_ATTR_ROW_COUNT – 转换成功的行数(ub4)

      • DCI_ATTR_COL_COUNT – 转换成功的列数(ub2)

      • DCI_ATTR_BUF_ADDR – 数据流缓冲区地址(void*)

      • DCI_ATTR_BUF_SIZE – 数据流缓冲区的大小(ub4)

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.59. DCIDirPathPrepare

函数原型:

sword    DCIDirPathPrepare(DCIDirPathCtx    *dpctx,
                        DCISvcCtx           *svchp,
                        DCIError            *errhp)

功能描述:

准备直接文件操作。在执行文件函数之前,文件操作的信息都要在文件操作环境的上下文件属性中预先设置好。

参数说明:

  • dpctx(输入)

    文件操作环境。

  • svchp(输入)

    执行所用的上下文句柄。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

注释:

在调用该函数之前,先要在 dpctx 上下文件中设置好要操作的表信息。

2.60. DCIDirPathColArrayEntrySet

函数原型:

sword    DCIDirPathColArrayEntrySet(DCIDirPathColArray     *dpca,
                                    DCIError               *errhp,
                                    ub4                    rownum,
                                    ub2                    colIdx,
                                    ub1                    *cvalp,
                                    ub4                    clen,
                                    ub1                    cflg)

功能描述:

设置写入文件数据数组上指定位置的数据内容。

参数说明:

  • dpca(输入)

    数据数组描述符指针。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • rownum(输入)

    设置的数据内容在数组中的行号。

  • colIdx(输入)

    设置的数据内容在数组中的列号。

  • cvalp(输入)

    设置的数据内容缓冲区指针。

  • clen(输入)

    数据内容的长度。

  • cflg(输入)

    数据属性标识,支持以下几种标识:

    • DCI_DIRPATH_COL_COMPLETE 在分批设置数据时,使用该标识表示数据已经结束

    • DCI_DIRPATH_COL_NULL 表示设置的数据是一个空(NULL)

    • DCI_DIRPATH_COL_PARTIAL 分批设置数据,表示当前设置的数据只是一部分

    • DCI_DIRPATH_COL_ERROR 错误的数据,会在该位置用空来替代

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.61. DCIDirPathColArrayToStream

函数原型:

sword    DCIDirPathColArrayToStream(DCIDirPathColArray         *dpca,
                                    DCIDirPathCtx              *dpctx,
                                    DCIDirPathStream           *dpstr,
                                    DCIError                   *errhp,
                                    ub4                        rowcnt,
                                    ub4                        rowoff)

功能描述:

把数据数组转换成为数据流。如果数组中存在不合法的数据,函数会执行失败,目前还没有实现定位错误数据的位置功能。

参数说明:

  • dpca(输入)

    数据数组描述符指针。

  • dpstr(输入)

    数据流描述符指针。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • rowcnt(输入)

    要转换的行数。

  • rowoff(输入)

    转换时在原数组上的起始偏移行号。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR,如果启用了分批传送,那么在需要数据的情况下会返回 DCI_NEED_DATA,表示分批设置数据还未完成,需要继续设置数据。

2.62. DCIDirPathLoadStream

函数原型:

sword    DCIDirPathLoadStream(DCIDirPathCtx     *dpctx,
                              DCIDirPathStream  *dpstr,
                              DCIError          *errhp)

功能描述:

写入转换后的数据流到文件。

参数说明:

  • dpctx(输入)

    文件操作环境。

  • dpstr(输入)

    数据流描述符指针。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.63. DCIDirPathDataSave

函数原型:

sword    DCIDirPathDataSave(DCIDirPathCtx      *dpctx,
                            DCIError           *errhp,
                            ub4                action)

功能描述:

保存转换成功的数据流到文件

参数说明:

  • dpctx(输入)

    文件操作环境。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • action(输入)

    保留参数,还未单独处理。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.64. DCIDirPathColArrayReset

函数原型:

sword DCIDirPathColArrayReset(DCIDirPathColArray     *dpca,
                              DCIError               *errhp)

功能描述:

重置数据数组,以便再次重新设置新的内容。

参数说明:

  • dpca(输入)

    数据数组描述符指针。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.65. DCIDirPathStreamReset

函数原型:

sword DCIDirPathStreamReset(DCIDirPathStream     *dpstr,
                            DCIError             *errhp)

功能描述:

重置数据流句柄,清空以前的转换设置。

参数说明:

  • dpstr(输入)

    数据流描述符指针。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.66. DCIDirPathFinish

函数原型:

sword DCIDirPathFinish(DCIDirPathCtx    *dpctx,
                       DCIError         *errhp)

功能描述:

完成直接文件操作,清空相应的环境。

参数说明:

  • dpctx(输入)

    文件操作环境。

  • malocfp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.67. DCIDirPathFlushRow

函数原型:

sword DCIDirPathFlushRow(DCIDirPathCtx  *dpctx,
                         DCIError       *errhp)

功能描述:

提交部分数据到数据库。

参数说明:

  • dpctx(输入)

    文件操作环境。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.68. DCIErrorGet

函数原型:

sword   DCIErrorGet(dvoid       *hndlp,
                    ub4         recordno,
                    DciText     *sqlstate,
                    sb4         *errcodep,
                    DciText     *bufp,
                    ub4         bufsiz,
                    ub4         type)

功能描述:

获取 DCI 操作失败产生的错误信息。

参数说明:

  • hndlp(输入)

    错误信息句柄指针。

  • recordno(输入)

    错误信息位置,目前只支持一条错误信息,所以请把该参数置为1。

  • sqlstate(输出)

    错误的状态码。

  • errcodep(输出)

    错误码,目前定义了以下几种错误码:

    • 1 – 违反唯一性约速

    • 1014 – 服务器连接已经关闭

    • 1092 – 连接异常中止

    • 1653 – 表空间不足

    • 604 – 表不存在

  • bufp(输出)

    错误的描述信息。

  • bufsiz(输入)

    bufp 所指的缓冲区大小。

  • type

    仅支持 DCI_HTYPE_ERROR 和 DCI_HTYPE_ENV

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.69. DCIDateTimeConstruct

函数原型:

sword   DCIDateTimeConstruct(void           *hndl,
                             DCIError       *err,
                             DCIDateTime    *datetime,
                             sb2            year,
                             ub1            month,
                             ub1            day,
                             ub1            hour,
                             ub1            min,
                             ub1            sec,
                             ub4            fsec,
                             DciText        *timezone,
                             size_t         timezone_length)

功能描述:

初始化datetime描述符的信息。

参数说明:

  • hndl(输入)

    Session句柄(或Env句柄)

  • err(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • datetime(输入)

    DCIDateTime的描述符指针。

  • year(输入)

    年。

  • month(输入)

    月。

  • day(输入)

    日。

  • hour(输入)

    时。

  • min(输入)

    分。

  • sec(输入)

    秒。

  • fsec(输入)

    微秒。

  • timezone

    时区,若没有设置时区,则默认session中的时区。

  • timezone_length

    时区的字符长度。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.70. DCIDateTimeGetDate

函数原型:

sword   DCIDateTimeGetDate(void                 *hndl,
                           DCIError             *err,
                           const DCIDateTime    *datetime,
                           sb2                  *year,
                           ub1                  *month,
                           ub1                  *day)

功能描述:

获取DCIDateTime中的日期信息。

参数说明:

  • hndl(输入)

    Session句柄(或Env句柄)。

  • err(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • datetime(输入)

    要获取的DCIDateTime描述符指针。

  • year(输出)

    返回的年。

  • month(输出)

    返回的月。

  • day(输出)

    返回的日。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.71. DCIDateTimeGetTime

函数原型:

sword   DCIDateTimeGetTime(void                 *hndl,
                           DCIError             *err,
                           const DCIDateTime    *datetime,
                           ub1                  *hour,
                           ub1                  *min,
                           ub1                  *sec,
                           ub4                  *fsec)

功能描述:

获取DCIDateTime中的时间信息。

参数说明:

  • hndl(输入)

    Session句柄(或Env句柄)。

  • err(输入)

    误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • datetime(输入)

    要获取的DCIDateTime描述符指针。

  • hour(输出)

    返回的时。

  • min(输出)

    返回的分。

  • sec(输出)

    返回的秒。

  • fsec(输出)

    返回的微秒。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.72. DCIIntervalGetDaySecond

函数原型:

sword DCIIntervalGetDaySecond(void              *hndl,
                              DCIError          *err,
                              sb4               *dy,
                              sb4               *hr,
                              ub1               *mm,
                              sb4               *ss,
                              ub4               *fsec,
                              const DCIInterval *interval)

功能描述:

获取DCIInterval中的时间信息。

参数说明:

  • hndl(输入)

    Session句柄(或Env句柄)。

  • err(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • dy(输出)

    返回的日。

  • hr(输出)

    返回的时。

  • mm(输出)

    返回的分。

  • ss(输出)

    返回的秒。

  • fsec(输出)

    返回的微秒。

  • interval(输入)

    DCIInterval描述符指针。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.73. DCIIntervalGetYearMonth

函数原型:

sword DCIIntervalGetYearMonth(void              *hndl,
                              DCIError          *err,
                              sb4               *yr,
                              sb4               *mnth,
                              const DCIInterval *interval)

功能描述:

获取DCIInterval中的日期信息(年月)。

参数说明:

  • hndl(输入)

    Session句柄(或Env句柄)。

  • err(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • yr(输出)

    返回的年。

  • mnth(输出)

    返回的月。

  • interval(输入)

    DCIInterval描述符指针。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.74. DCIIntervalFromText

函数原型:

sword   DCIIntervalFromText(void                *hndl,
                            DCIError            *err,
                            const DciText       *inpstring,
                            size_t              str_len,
                            const DCIInterval   *result)

功能描述:

从字符串形式转到DCIInterval。

参数说明:

  • hndl(输入)

    Session句柄(或Env句柄)。

  • err(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • inpstring(输入)

    输入的字符串形式的interval:

    • year(-4713 to 9999)

    • month(1 to 2)

    • day(1 to 28...31)

    • hour(0 to 23)

    • hour(0 to 11)(am, pm)

    • minutes(0 to 59)

    • seconds(0 to 59)

    • The seconds in the day(0 to 86399)

  • str_len(输入)

    输入字符串的长度。

  • result(输出)

    存储解析interval信息后的DCIInterval指针。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.75. DCINumberToText

函数原型:

sword   DCINumberToText(DCIError            *err,
                        const DCINumber     *number,
                        const DciText       *fmt,
                        ub4                 fmt_length,
                        const DciText       *nls_params,
                        ub4                 nls_p_length,
                        ub4                 *buf_size,
                        DciText             *buf)

功能描述:

将DCINumber的值转换成字符串。

参数说明:

  • err(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • number(输入)

    有效的DCINumber指针。

  • fmt(输入)

    转换的格式:

    • 9 - 带有指定数值位数的十进制值

    • 0 - 带前导零的值

    • . - (句号)小数点

    • , - (逗号)分组(千)分隔符

    • PR - 尖括号内负值

    • S - 带负号的负值(使用区域设置)

    • L - 货币符号(使用区域设置)

    • D - 小数点(使用区域设置)

    • G - 分组分隔符(使用区域设置)

    • MI - 在指明的位置的负号(如果数字 < 0)

    • PL - 在指明的位置的正号(如果数字 > 0)

    • SG - 在指明的位置的正/负号

    • RN - 罗马数字(输入在 1 和 3999 之间)

    • TH或th - 转换成序数

    • V - 移动 n 位(小数)(参阅注解)

    • X - 带有指定数值位数的十六进制值

    • EEEE - 科学记数。(现在还不支持)

  • fmt_length(输入)

    fmt的字节长度。

  • nls_params(输入)

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)。

  • nls_p_length(输入)

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)。

  • buf_size(输出)

    buf的字节长度。

  • buf(输出)

    输出的DCINumber的字符形式存储到该指针指向的内存。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.76. DCINumberFromText

函数原型:

sword   DCINumberFromText(DCIError          *err,
                          const DciText     *str,
                          ub4               str_length,
                          const DciText     *fmt,
                          ub4               fmt_length,
                          const DciText     *nls_params,
                          ub4               nls_p_length,
                          DCINumber         *number)

功能描述:

从字符串转换成DCINumber。

参数说明:

  • err(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • str(输入)

    输入的DCINumber的字符串形式。

  • str_length(输入)

    str的字节长度。

  • fmt(输入)

    转换的格式,同DCINumberToText。

  • fmt_length(输入)

    fmt的字节长度。

  • nls_params(输入)

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)。

  • nls_p_length(输入)

    保留参数,目前不使用(仅用于和 Oracle 保持兼容)。

  • number(输出)

    输出的DCINumber指针。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.77. DCINumberToInt

函数原型:

sword   DCINumberToInt(DCIError         *err,
                       const DCINumber  *number,
                       uword            rsl_length,
                       uword            rsl_flag,
                       void             *rsl)

功能描述:

将DCINumber的值转换成整型数值。

参数说明:

  • err(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • number(输入)

    有效的DCINumber指针。

  • rsl_length(输入)

    rsl的字节长度。

  • rsl_flag(输入)

    Sign标识:

    • DCI_NUMBER_UNSINGDED

    • DCI_NUMBER_SIGNED

  • rsl(输出)

    整型指针,DCINumber的数值形式被写入该指针指向的内存。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.78. DCINumberFromInt

函数原型:

sword   DCINumberFromInt(DCIError           *err,
                         const void         *inum,
                         uword              inum_length,
                         uword              inum_s_flag,
                         DCINumber          *number)

功能描述:

将整型的数值转换成DCINumber。

参数说明:

  • err(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • inum(输入)

    指向整型数值的指针。

  • inum_length(输入)

    整型数值的长度。

  • inum_s_flag(输入)

    Sign标识:

    • DCI_NUMBER_UNSINGDED

    • DCI_NUMBER_SIGNED

  • number(输出)

    有效的DCINumber指针,将inum指向的值写入DCINumber。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.79. DCINumberToReal

函数原型:

sword   DCINumberToReal(DCIError        *err,
                        const DCINumber *number,
                        uword           rsl_length,
                        void            *rsl)

功能描述:

将DCINumber的值转换成浮点型的数值。

参数说明:

  • err(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • number(输入)

    有效的DCINumber指针。

  • rsl_length(输入)

    rsl的字节长度。

  • rsl(输出)

    浮点型类型指针,DCINumber的数值形式被写入该指针指向的内存。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.80. DCINumberFromReal

函数原型:

sword   DCINumberFromReal(DCIError    *err,
                          const void  *rnum,
                          uword       rnum_length,
                          DCINumber   *number)

功能描述:

将浮点型的数值转换成DCINumber的值。

参数说明:

  • err(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • rnum(输入)

    有效的指向浮点类型的指针。

  • rnum_length(输入)

    rnum的字节长度。

  • number(输出)

    有效的DCINumber指针。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.81. DCIStmtGetPieceInfo

函数原型:

sword   DCIStmtGetPieceInfo(const DCIStmt   *stmtp,
                            DCIError        *errhp,
                            void            **hndlpp,
                            ub4             *typep,
                            ub1             *in_outp,
                            ub4             *iterp,
                            ub4             *idxp,
                            ub1             *piecep)

功能描述:

返回分段信息,对于大数据类型进行分段操作时有用。支持的数据类型:BLOB、CLOB、TEXT、BYTEA。

参数说明:

  • stmtp(输入)

    语句句柄。

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • hndlpp(输出)

    返回的句柄类型:

    • DCI_HTYPE_BIND - Bind类型

    • DCI_HTYPE_DEFINE - Define类型

  • in_outp(输出)

    输入输出类型:

    • DCI_PARAM_IN - 输入类型(Bind参数)

    • DCI_PARAM_OUT - 输出类型(Define的结果集)

  • iterp(输出)

    多行处理的行号。

  • idxp(输出)

    数组绑定的索引号。

  • piecep(输出)

    分段操作的类型:

    • DCI_ONE_PIECE - 只需要一次

    • DCI_FIRST_PIECE - 多次中的第一次

    • DCI_NEXT_PIECE - 多次中的下一次

    • DCI_LAST_PIECE - 多次中的最后一次

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.82. DCIStmtSetPieceInfo

函数原型:

sword   DCIStmtSetPieceInfo(void            *hndlp,
                            ub4             type,
                            DCIError        *errhp,
                            const void      *bufp,
                            ub4             *alenp,
                            ub1             piece,
                            const void      *indp,
                            ub2             *rcodep)

功能描述:

设置分段信息,对于大数据类型进行分段操作时有用。支持的数据类型:BLOB、CLOB、TEXT、BYTEA。

参数说明:

  • hndlp(输入)

    有效的Bind或者Define句柄。

  • type(输入)

    hndlp的句柄类型:

    • DCI_HTYPE_BIND - Bind类型

    • DCI_HTYPE_DEFINE - Define类型

  • errhp(输入)

    错误信息句柄,该接口调用失败时,错误信息会存在该句柄上。

  • bufp(输入)

    分段操作的数据指针。

  • alenp(输入)

    本次分段处理的数据长度。

  • piece(输入)

    分段处理的类型:

    • DCI_ONE_PIECE - 只需要一次

    • DCI_FIRST_PIECE - 多次中的第一次

    • DCI_NEXT_PIECE - 多次中的下一次

    • DCI_LAST_PIECE - 多次中的最后一次

  • indp(输出)

    Indicator类型,可以是数组类型。

  • rcodep(输出)

    返回代码,可以是数组指针。

返回值:

如果执行成功,返回 DCI_SUCCESS,否则返回 DCI_ERROR。

2.83. DCIDateTimeFromText

函数原型:

sword DCIDateTimeFromText(void              *hndlp,
                          DCIError          *errhp,
                          const DciText     *date_str,
                          size_t            dstr_length,
                          const DciText     *fmt,
                          ub1               fmt_length,
                          const DciText     *lang_name,
                          size_t            lang_length,
                          DCIDateTime       *datetime)

功能描述:

把字符串按照一定格式转换成DateTime类型

参数说明:

  • hndlp(输入)

    DCI环境句柄

  • errhp(输入/输出)

    DCI错误信息句柄,如果函数执行错误会返回DCI_ERROR,可通过DCIErrorGet获取错误信息

  • date_str(输入)

    用来转换的日期字符串

  • dstr_length(输入)

    日期字符串的长度

  • fmt(输入)

    日期格式串

  • fmt_length(输入)

    日期格式串的长度

  • lang_name(输入)

    日期中语言的名称

  • lang_length(输入)

    语言字符串的长度

  • datetime(输出)

    DCIDateTime类型的指针,输入的字符串会转换成该类型

返回值:

如果执行成功,返回 DCI_SUCCESS。

如果句柄为NULL,或datetime为NULL,或环境句柄类型不正确,则返回 DCI_INVALID_HANDLE。

否则返回 DCI_ERROR。

注释:

默认lang_name为NULL,不处理。

2.84. DCIDateTimeToText

函数原型:

sword DCIDateTimeToText(void                *hndlp,
                        DCIError            *errhp,
                        const DCIDateTime   *datetime,
                        const DciText       *fmt,
                        ub1                 fmt_length,
                        ub1                 fsprec,
                        const DciText       *lang_name,
                        size_t              lang_length,
                        ub4                 *bufsz,
                        DciText             *bufp)

功能描述:

根据指定格式把一个日期类型数据转换成字符串

参数说明:

  • hndlp(输入)

    DCI环境句柄

  • errhp(输入/输出)

    DCI错误信息句柄,如果函数执行错误会返回DCI_ERROR,可通过DCIErrorGet获取错误信息

  • datetime(输入)

    用来转换的DCIDatetime类型指针

  • fmt(输入)

    日期格式串

  • fmt_length(输入)

    日期格式串的长度

  • fsprec(输入)

    指定返回结果的字符串中,毫秒的精度

  • lang_name(输入)

    日期中语言的名称

  • lang_length(输入)

    语言字符串的长度

  • bufsz(输入/输出)

    返回结果字符串的长度,如果转换过程无误,最终结果又比传入长度小,该值会赋值为当前长度的值并返回

  • bufp(输出)

    缓冲区指针,转换后的字符串存入该区域

返回值:

如果执行成功,返回 DCI_SUCCESS。

如果句柄为NULL,则返回 DCI_INVALID_HANDLE。

如果缓冲区的大小小于转换后的结果字符串,返回 DCI_ERROR,错误码1877。

注释:

默认lang_name为NULL,不处理。

2.85. DCIDateFromText

函数原型:

sword DCIDateFromText ( DCIError          *errhp,
                        const DciText     *date_str,
                        size_t            d_str_length,
                        const DciText     *fmt,
                        ub1               fmt_length,
                        const DciText     *lang_name,
                        size_t            lang_length,
                        DCIDate           *date)

功能描述:

把字符串按照一定格式转换成Date类型

参数说明:

  • errhp(输入/输出)

    DCI错误信息句柄,如果函数执行错误会返回DCI_ERROR,可通过DCIErrorGet获取错误信息

  • date_str(输入)

    用来转换的日期字符串

  • dstr_length(输入)

    日期字符串的长度

  • fmt(输入)

    日期格式串

  • fmt_length(输入)

    日期格式串的长度

  • lang_name(输入)

    日期中语言的名称

  • lang_length(输入)

    语言字符串的长度

  • date(输出)

    DCIDate类型的指针,输入的字符串会转换成该类型

返回值:

如果执行成功,返回 DCI_SUCCESS。

如果句柄为NULL,或datetime为NULL,或环境句柄类型不正确,则返回 DCI_INVALID_HANDLE。

否则返回 DCI_ERROR。

注释:

默认lang_name为NULL,不处理。

2.86. DCIDateToText

函数原型:

sword DCIDateToText (DCIError            *errhp,
                     const DCIDate       *date,
                     const DciText       *fmt,
                     ub1                 fmt_length,
                     const DciText       *lang_name,
                     size_t              lang_length,
                     ub4                 *bufsz,
                     DciText             *bufp)

功能描述:

根据指定格式把一个日期类型数据转换成字符串

参数说明:

  • errhp(输入/输出)

    DCI错误信息句柄,如果函数执行错误会返回DCI_ERROR,可通过DCIErrorGet获取错误信息

  • date(输入)

    用来转换的DCIDate类型指针

  • fmt(输入)

    日期格式串

  • fmt_length(输入)

    日期格式串的长度

  • lang_name(输入)

    日期中语言的名称

  • lang_length(输入)

    语言字符串的长度

  • bufsz(输入/输出)

    返回结果字符串的长度,如果转换过程无误,最终结果又比传入长度小,该值会赋值为当前长度的值并返回

  • bufp(输出)

    缓冲区指针,转换后的字符串存入该区域

返回值:

如果执行成功,返回 DCI_SUCCESS。

如果句柄为NULL,则返回 DCI_INVALID_HANDLE。

如果缓冲区的大小小于转换后的结果字符串,返回 DCI_ERROR,错误码1877。

注释:

默认lang_name为NULL,不处理。

  • 18
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值