诊断消息

每个 SQLSTATE 都会返回一条诊断消息。 同一 SQLSTATE 通常返回多条不同的消息。 例如,对于 SQL 语法中的大多数错误,会返回 SQLSTATE 42000(语法错误或访问冲突)。 但是,可能会使用不同的消息描述每个语法错误。

在附录 A 和每个函数的 SQLSTATE 表的“错误”列中列出了示例诊断消息。 尽管驱动程序可能返回这些消息,但更有可能返回数据源向其传递的任何消息。

应用程序通常向用户显示诊断消息,以及 SQLSTATE 和本机错误代码。 这有助于用户和支持人员确定任何问题的原因。 消息中嵌入的组件信息在执行此操作时特别有用。

诊断消息来自 ODBC 连接中的数据源和组件,例如驱动程序、网关和驱动程序管理器。 通常,数据源不直接支持 ODBC。 因此,如果 ODBC 连接中的组件从数据源接收消息,则必须将数据源标识为消息的来源。 此组件还必须将自身标识为接收消息的组件。

如果错误或警告的来源是组件本身,则诊断消息必须对此进行说明。 因此,消息的文本有两种不同的格式。 对于数据源中未发生的错误和警告,诊断消息必须使用以下格式:

[ vendor-identifier ][ ODBC-component-identifier ] component-supplied-text

对于数据源中发生的错误和警告,诊断消息必须使用以下格式:

[ vendor-identifier ][ ODBC-component-identifier ][ data-source-identifier ] data-source-supplied-text

下表显示了每个元素代表的含义。

元素 含义
vendor-identifier 如果组件中发生错误或警告,或者直接从数据源收到错误或警告,则此元素标识组件的供应商。
ODBC-component-identifier 如果组件中发生错误或警告,或者直接从数据源收到错误或警告,则此元素标识组件。
data-source-identifier 标识数据源。 如果是基于文件的驱动程序,则通常表示文件格式,例如 Xbase[1];如果是基于 DBMS 的驱动程序,则表示 DBMS 产品。
component-supplied-text 由 ODBC 组件生成。
data-source-supplied-text 由数据源生成。

[1] 在本例中,驱动程序同时充当驱动程序和数据源。

方括号 ([ ]) 必须包含在消息中,并且不指示可选项。