ORA-39824: The OCI_ATTR_DIRPATH_USE_ACTIVE_TRANS attribute was set when no transaction was active.

文档解释

ORA-39824: The OCI_ATTR_DIRPATH_USE_ACTIVE_TRANS attribute was set when no transaction was active.

Cause: There was no active transaction to use.

Action: Start a transaction or do not set the attribute OCI_ATTR_DIRPATH_USE_ACTIVE_TRANS to TRUE.

当没有活动的事务时,将OCI_ATTR_DIRPATH_USE_ACTIVE_TRANS属性设置为真,就会引发ORA-39824错误,官方解释是,所请求的操作必须有一个活动事务才行。

常见案例是在使用dirpath构建重复组技术时,程序会抛出ORA-39824,因为对于类型为OCI_DTYPE_DIRPATH_CB的OCIDirPathColArrayEntry结构体,需要在准备文件处理阶段设置OCI_ATTR_DIRPATH_USE_ACTIVE_TRANS属性,以便允许在使用和处理重复组元素时使用Active Transaction,否则就会产生该错误。

一般处理方法及步骤

(1)在调用OCIDirPathPrepare之前,需要使用OCIStart()开启一个活动的事务,并将OCI_ATTR_DIRPATH_USE_ACTIVE_TRANS属性设置为true来显式启用事务处理;

(2)然后使用OCIDirPathPrepare()预处理;

(3)使用OCIDirPathLoadStream()加载和处理OCIDirPathColArrayEntry结构体;

(4)最后,使用OCIDirPathFinish()完成处理;

(5)OCICommit()提交事务。

你可能感兴趣的