基于 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 驱动程序])的前缀添加到诊断消息中。