dpi_get_diag_field
DPIRETURN dpi_get_diag_field( sdint2 hndl_type, dhandle hndl, sdint2 rec_num, sdint2 diag_id, dpointer diag_info, slength buf_len, slength *info_len );
功能
获取诊断信息的某个指定域的值。
参数
1) hndl_type
输入参数,需要获取诊断信息的句柄类型。必须为下列值之一:
- DSQL_HANDLE_ENV
- DSQL_HANDLE_DBC
- DSQL_HANDLE_STMT
- DSQL_HANDLE_DESC
- DSQL_HANDLE_LOB_LOCATOR
- DSQL_HANDLE_OBJECT
- DSQL_HANDLE_OBJECTDESC
2) hndl
输入参数,需要取得诊断信息且由 hndl_type 所标示的句柄。
3) rec_num
输入参数,诊断信息的索引号。索引起始为 1。如果 diag_id 为诊断头信息,则此参数
被忽略。
4) diag_id
输入参数,指定需要获取值的诊断域。更多信息参见说明。
5) diag_info
输出参数,指向返回诊断域信息的缓冲区的指针。数据类型依赖于 diag_id。
6) buf_len
输入参数,如果 diag_info 返回的是字符串,则此参数为 diag_info 缓冲区的长度。如果
diag_info 返回的不是字符串,则此参数忽略。
7) info_len
输出参数,指向返回 diag_info 中可提供字符串的总长度的缓冲区的指针。如果 diag_info
为 NULL,则不返回长度,如果 diag_info 值为字符串,总长度大于等于 buf_len,则 diag_info
值被截断且以 0 结尾。
返回值
DSQL_SUCCESS
DSQL_SUCCESS_WITH_INFO
DSQL_ERROR
DSQL_INVALID_HANDLE
DSQL_NO_DATA
说明
函数返回值含义:
- DSQL_SUCCESS:函数成功返回诊断信息。
- DSQL_SUCCESS_WITH_INFO:diag_info 缓冲区长度不足,诊断信息被截断。
- DSQL_ERROR:发生了下列情况之一:
- rec_num 小于等于 0。对于诊断头,忽略 rec_num。
- 所要求的诊断域的值为字符串,而 buf_sz 小于 0。
- diag_id 不是一个有效的诊断域。
- diag_id 为 DSQL_DIAG_ROW_COUNT ,
DSQL_DIAG_DYNAMIC_FUNCTION_CODE,DSQL_DIAG_PRINT_INFO 或
者 DSQL_DIAG_EXPLAIN,但 hndl 不是一个语句句柄。
- DSQL_INVALID_HANDLE:由 hndl_type 所标示的 hndl 为一个无效的句柄。
- DSQL_NO_DATA:rec_num 大于句柄所含有的诊断信息总数。
https://xpanx.com/
评论