DBMS-Based 驱动程序诊断示例

基于 DBMS 的驱动程序将请求发送到 DBMS,并通过驱动程序管理器将信息返回到应用程序。 由于驱动程序是与驱动程序管理器进行交互的组件,因此它会格式化并返回 SQLGetDiagRec 的参数。

例如,如果使用 SQL/Services,Oracle Rdb 的 Microsoft 驱动程序遇到无效的游标名称,它可能会从 SQLGetDiagRec 返回以下值:

SQLSTATE:         "34000"  
Native Error:      0  
Diagnostic Msg:   "[Microsoft][ODBC Rdb Driver]Invalid cursor name: EMPLOYEE_CURSOR."  

由于驱动程序中发生错误,因此它向供应商([Microsoft])和驱动程序([ODBC Rdb 驱动程序])的诊断消息添加了前缀。

如果 DBMS 找不到表 EMPLOYEE,驱动程序可能会格式化并返回 SQLGetDiagRec 中的以下值:

SQLSTATE:         "42S02"  
Native Error:      -1  
Diagnostic Msg:   "[Microsoft][ODBC Rdb Driver][Rdb] %SQL-F-RELNOTDEF, Table EMPLOYEE "  
                  "is not defined in schema."  

由于数据源中发生错误,驱动程序向诊断消息添加了数据源标识符([Rdb])的前缀。 由于驱动程序是与数据源交互的组件,因此它会将供应商([Microsoft]])和标识符([ODBC Rdb 驱动程序])的前缀添加到诊断消息中。