Пример диагностики драйверов на основе СУБД
Драйвер на основе СУБД отправляет запросы в СУБД и возвращает сведения приложению через диспетчер драйверов. Так как драйвер является компонентом, который взаимодействует с диспетчером драйверов, он форматирует и возвращает аргументы для SQLGetDiagRec.
Например, если при использовании SQL/Services драйвер Microsoft для Oracle Rdb обнаружил недопустимое имя курсора, он может вернуть следующие значения из SQLGetDiagRec:
SQLSTATE: "34000"
Native Error: 0
Diagnostic Msg: "[Microsoft][ODBC Rdb Driver]Invalid cursor name: EMPLOYEE_CURSOR."
Так как ошибка произошла в драйвере, он добавил префиксы в диагностическое сообщение поставщика ([Майкрософт]) и драйвер ([ДРАЙВЕР RDB ODBC]).
Если СУБД не удалось найти таблицу 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]) в диагностическое сообщение. Так как драйвер был компонентом, интерфейсируемым с источником данных, он добавил префиксы для своего поставщика ([Майкрософт]) и идентификатор ([драйвер RDB ODBC]) в диагностическое сообщение.