ACIErrorGet()¶
-
ACIErrorGet()¶
作用:
在提供的缓冲区中返回错误消息和数据库错误代码。
语法:
sword ACIErrorGet ( void *hndlp,
ub4 recordno,
OraText *sqlstate,
sb4 *errcodep,
OraText *bufp,
ub4 bufsiz,
ub4 type );
参数:
- hndlp (IN)
错误句柄或环境句柄(用于 ACIEnvCreate , ACIHandleAlloc 的错误)。
- recordno (IN)
指示应用程序从中寻求信息的状态记录。 从1开始。
- sqlstate (OUT)
在8.x版或更高版本中不支持。
- errcodep (OUT)
返回错误代码。
- bufp (OUT)
返回错误消息文本。
- bufsiz (IN)
为错误消息提供的缓冲区的大小,以字节数为单位。 如果错误消息的长度大于bufsiz,则会在bufp中返回截短的错误消息文本。
如果将type设置为ACI_HTYPE_ERROR,则 ACIErrorGet 截断期间的返回码为ACI_ERROR。 然后,客户端可以指定更大的缓冲区,然后再次调用 ACIErrorGet 。
如果bufsiz足以容纳整个消息文本,并且消息可以成功复制到bufp中,则 ACIErrorGet 的返回码为ACI_SUCCESS。
使用以下常量之一来定义错误消息缓冲区,您可以从 ACIErrorGet 返回返回的消息到缓冲区中:
#define ACI_ERROR_MAXMSG_SIZE 1024 /* 最大错误信息长度 */
#define ACI_ERROR_MAXMSG_SIZE2 3072 /* 新的最大错误长度 */
您应该使用ACI_ERROR_MAXMSG_SIZE2来确保您在返回的错误文本中获得了更多信息。
例如,您可以执行以下操作:
char errorMesg[ACI_ERROR_MAXMSG_SIZE2];
- type (IN)
句柄的类型(ACI_HTYPE_ERROR或ACI_HTYPE_ENV)。
说明:
此功能不支持SQL语句。 通常,hndlp实际上是错误句柄或环境句柄。 您应该始终以环境句柄中设置的编码来获取消息。
请注意,仅应在返回ACI_ERROR或ACI_SUCCESS_WITH_INFO的ACI调用之后调用 ACIErrorGet 。
错误句柄最初是通过调用 ACIHandleAlloc 分配的。
注意: ACIErrorGet 函数至少返回一个诊断记录。 可以通过重复调用 ACIErrorGet 方法来检索多个诊断记录,直到没有更多的记录并且该方法返回ACI_NO_DATA。