使用SQLSTATE标识SQL错误时,有时可能很难决定如何处理该信息。 CONNECTION_NAME和ENVIRONMENT_NAME标识执行SQL语句时连接到的连接和环境。
如果报表处理表操作,则CATALOG_NAME,SCHEMA_NAME和TABLE_NAME会标识该表。 COLUMN_NAME标识表格中导致进行报告的列。如果情况涉及游标,则CURSOR_NAME将提供其名称。
<! - 1 - >有时DBMS会产生一串自然语言文本来解释条件。 MESSAGE_TEXT项目用于这种信息。这个项目的内容取决于实施; SQL标准没有明确定义它们。如果您在MESSAGE_TEXT中确实有某些内容,则其字符长度记录在MESSAGE_LENGTH中,其长度以八位字节记录在MESSAGE_OCTET_LENGTH中。
如果消息是正常的ASCII字符,则MESSAGE_LENGTH等于MESSAGE_OCTET_LENGTH。另一方面,如果消息是汉字或其他字符需要多于一个八位字节来表示的其他语言,则MESSAGE_LENGTH不同于MESSAGE_OCTET_LENGTH。
要从诊断区域标题中检索诊断信息,请使用以下命令:
GET DIAGNOSTICS status1 = item1 [,status2 = item2] …;
statusn是主机变量或参数; itemn可以是任何关键字NUMBER,MORE,COMMAND_FUNCTION,DYNAMIC_FUNCTION或ROW_COUNT。
要从诊断详细信息区域检索诊断信息,请使用以下语法:
GET DIAGNOSTICS EXCEPTION条件编号status1 = item1 [,status2 = item2] …;
同样,statusn是主机变量或参数,itemn是表21-2中列出的详细项目的28个关键字中的任意一个。条件编号是(惊喜!)细节区域的CONDITION_NUMBER项目。