诊断消息
每个 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] 在本例中,驱动程序同时充当驱动程序和数据源。
方括号 ([ ]) 必须包含在消息中,并且不指示可选项。