Функция SQLGetDiagField
Соответствия
Представлена версия: соответствие стандартам ODBC 3.0: ISO 92
Сводка
SQLGetDiagField возвращает текущее значение поля записи структуры диагностических данных (связанной с указанным дескриптором), содержащей сведения об ошибке, предупреждении и состоянии.
Синтаксис
SQLRETURN SQLGetDiagField(
SQLSMALLINT HandleType,
SQLHANDLE Handle,
SQLSMALLINT RecNumber,
SQLSMALLINT DiagIdentifier,
SQLPOINTER DiagInfoPtr,
SQLSMALLINT BufferLength,
SQLSMALLINT * StringLengthPtr);
Аргументы
HandleType
[Входные данные] Идентификатор типа дескриптора, описывающий тип дескриптора, для которого требуется диагностика. Должна быть одной из следующих:
SQL_HANDLE_DBC
SQL_HANDLE_DBC_INFO_TOKEN
SQL_HANDLE_DESC
SQL_HANDLE_ENV
SQL_HANDLE_STMT
SQL_HANDLE_DBC_INFO_TOKEN дескриптор используется только диспетчером драйверов и драйвером. Приложения не должны использовать этот тип дескриптора. Дополнительные сведения о SQL_HANDLE_DBC_INFO_TOKEN см. в статье "Разработка осведомленности о пуле подключений" в драйвере ODBC.
Дескриптор
[Входные данные] Дескриптор структуры диагностических данных типа, указанного HandleType. Если HandleType SQL_HANDLE_ENV, дескриптор может быть общим или необработаным дескриптором среды.
RecNumber
[Входные данные] Указывает запись состояния, из которой приложение ищет сведения. Записи состояния нумеруются от 1. Если аргумент DiagIdentifier указывает любое поле заголовка диагностики, RecNumber игнорируется. Если нет, это должно быть более 0.
DiagIdentifier
[Входные данные] Указывает поле диагностики, значение которого должно быть возвращено. Дополнительные сведения см. в разделе "Аргумент DiagIdentifier " в разделе "Комментарии".
DiagInfoPtr
[Выходные данные] Указатель на буфер, в котором возвращаются диагностические сведения. Тип данных зависит от значения DiagIdentifier. Если DiagInfoPtr является целым типом, приложения должны использовать буфер SQLULEN и инициализировать значение до 0 перед вызовом этой функции, так как некоторые драйверы могут записывать только нижний 32-разрядный или 16-разрядный буфер и оставлять бит выше порядка без изменений.
Если DiagInfoPtr имеет значение NULL, StringLengthPtr по-прежнему возвращает общее количество байтов (за исключением символа завершения null для символьных данных), доступное для возврата в буфер, на который указывает DiagInfoPtr.
BufferLength
[Входные данные] Если DiagIdentifier — это определяемый ODBC диагностический объект и DiagInfoPtr указывает на символьную строку или двоичный буфер, этот аргумент должен быть длиной *DiagInfoPtr. Если DiagIdentifier является определяемым ODBC полем, а *DiagInfoPtr является целым числом, bufferLength игнорируется. Если значение в *DiagInfoPtr является строкой Юникода (при вызове SQLGetDiagFieldW), аргумент BufferLength должен быть четным.
Если DiagIdentifier является полем, определяемым драйвером, приложение указывает характер поля диспетчеру драйверов, задав аргумент BufferLength . BufferLength может иметь следующие значения:
Если DiagInfoPtr является указателем на символьную строку, BufferLength — это длина строки или SQL_NTS.
Если DiagInfoPtr является указателем на двоичный буфер, приложение помещает результат макроса SQL_LEN_BINARY_ATTR(длина) в BufferLength. Это помещает отрицательное значение в BufferLength.
Если DiagInfoPtr является указателем на значение, отличное от символьной строки или двоичной строки, BufferLength должно иметь значение SQL_IS_POINTER.
Если *DiagInfoPtr содержит тип данных фиксированной длины, BufferLength SQL_IS_INTEGER, SQL_IS_UINTEGER, SQL_IS_SMALLINT или SQL_IS_USMALLINT.
StringLengthPtr
[Выходные данные] Указатель на буфер, в котором возвращается общее число байтов (за исключением количества байтов, необходимых для символа завершения null), доступного для возврата в *DiagInfoPtr для символьных данных. Если число байтов, доступных для возврата, больше или равно BufferLength, текст в *DiagInfoPtr усечен до BufferLength минус длина символа завершения null.
Возвраты
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE или SQL_NO_DATA.
Диагностика
SQLGetDiagField не публикует диагностические записи для себя. В нем используются следующие возвращаемые значения, чтобы сообщить о результатах собственного выполнения:
SQL_SUCCESS: функция успешно вернула диагностические сведения.
SQL_SUCCESS_WITH_INFO: *DiagInfoPtr было слишком небольшим, чтобы сохранить запрошенное диагностическое поле. Поэтому данные в поле диагностики усечены. Чтобы определить, что произошло усечение, приложение должно сравнить BufferLength с фактическим числом доступных байтов, которое записывается в *StringLengthPtr.
SQL_INVALID_HANDLE: дескриптор, указанный HandleType и Handle, не является допустимым дескриптором .
SQL_ERROR: произошло одно из следующих действий:
Аргумент DiagIdentifier не был одним из допустимых значений.
Аргумент DiagIdentifier был SQL_DIAG_CURSOR_ROW_COUNT, SQL_DIAG_DYNAMIC_FUNCTION, SQL_DIAG_DYNAMIC_FUNCTION_CODE или SQL_DIAG_ROW_COUNT, но Handle не был дескриптором инструкции. (Диспетчер драйверов возвращает эту диагностику.)
Аргумент RecNumber был отрицательным или 0, когда DiagIdentifier указал поле из диагностической записи. Значение RecNumber игнорируется для полей заголовка.
Запрошенное значение было символьной строкой, а BufferLength было меньше нуля.
При использовании асинхронного уведомления асинхронная операция в дескрипторе не завершена.
SQL_NO_DATA. Число записей диагностики, которые существовали для дескриптора, указанного в handle, было больше. Функция также возвращает SQL_NO_DATA для любого положительного значения RecNumber, если для Handle нет диагностических записей.
Комментарии
Приложение обычно вызывает SQLGetDiagField для выполнения одной из трех целей:
Получение определенных сведений об ошибке или предупреждении при возврате вызова функции SQL_ERROR или SQL_SUCCESS_WITH_INFO (или SQL_NEED_DATA для функции SQLBrowseConnect ).
Чтобы определить количество строк в источнике данных, затронутых при вставке, удалении или обновлении, выполнялись с вызовом SQLExecute, SQLExecDirect, SQLBulkOperations или SQLSetPos (из поля заголовка SQL_DIAG_ROW_COUNT) или для определения количества строк, существующих в текущем открытом курсоре, если драйвер может предоставить эти сведения (из поля заголовка SQL_DIAG_CURSOR_ROW_COUNT).
Чтобы определить, какая функция была выполнена вызовом SQLExecDirect или SQLExecute (из полей заголовка SQL_DIAG_DYNAMIC_FUNCTION и SQL_DIAG_DYNAMIC_FUNCTION_CODE заголовка).
Любая функция ODBC может публиковать ноль или больше диагностических записей при каждом вызове, поэтому приложение может вызывать SQLGetDiagField после любого вызова функции ODBC. Количество диагностических записей, которые можно хранить в любое время, не ограничено. SQLGetDiagField извлекает только последние диагностические сведения, связанные со структурой диагностических данных, указанной в аргументе Handle . Если приложение вызывает функцию ODBC, отличной от SQLGetDiagField или SQLGetDiagRec, все диагностические сведения из предыдущего вызова с тем же дескриптором теряются.
Приложение может сканировать все диагностические записи, добавив recNumber, если SQLGetDiagField возвращает SQL_SUCCESS. Число записей состояния указывается в поле заголовка SQL_DIAG_NUMBER. Вызовы SQLGetDiagField являются недеструктивными для полей заголовка и записи. Приложение может снова вызвать SQLGetDiagField позже, чтобы получить поле из записи, если функция, отличной от диагностических функций, не была вызвана в промежуточном периоде, которая будет публиковать записи в том же дескрипторе.
Приложение может вызывать SQLGetDiagField для возврата любого диагностического поля в любое время, за исключением SQL_DIAG_CURSOR_ROW_COUNT или SQL_DIAG_ROW_COUNT, которое возвращает SQL_ERROR, если Дескриптор не является дескриптором инструкции. Если любое другое поле диагностики не определено, вызов SQLGetDiagField вернет SQL_SUCCESS (если не обнаружена другая диагностика), а для поля возвращается неопределенное значение.
Дополнительные сведения см. в статье Об использовании SQLGetDiagRec и SQLGetDiagField и реализации SQLGetDiagRec и SQLGetDiagField.
Вызов API, отличный от выполняемого асинхронно, приведет к возникновению ошибки последовательности функций HY010. Однако запись об ошибке не может быть получена до завершения асинхронной операции.
Аргумент HandleType
Каждый тип дескриптора может иметь диагностические сведения, связанные с ним. Аргумент HandleType указывает тип дескриптора Дескриптора.
Некоторые поля заголовков и записей нельзя возвращать для дескрипторов среды, подключения, инструкции и дескриптора. Эти дескриптора, для которых поле неприменимо, указываются в разделах "Поля заголовка" и "Поля записи" ниже.
Если HandleType SQL_HANDLE_ENV, дескриптор может быть общим или не общим дескриптором среды.
Поля диагностики заголовков для конкретного драйвера не должны быть связаны с дескриптором среды.
Единственными полями заголовка диагностики, определенными для дескриптора, являются SQL_DIAG_NUMBER и SQL_DIAG_RETURNCODE.
Аргумент DiagIdentifier
Этот аргумент указывает идентификатор поля, необходимого для структуры диагностических данных. Если значение RecNumber больше или равно 1, данные в поле описывают диагностические сведения, возвращаемые функцией. Если значение RecNumber равно 0, поле находится в заголовке структуры диагностических данных и поэтому содержит данные, относящиеся к вызову функции, возвращающим диагностические сведения, а не к определенной информации.
Драйверы могут определять поля заголовков и записей для конкретного драйвера в структуре диагностических данных.
Приложение ODBC 3*.x*, работающее с драйвером ODBC 2*.x*, сможет вызывать SQLGetDiagField только с аргументом DiagIdentifier SQL_DIAG_CLASS_ORIGIN, SQL_DIAG_CLASS_SUBCLASS_ORIGIN, SQL_DIAG_CONNECTION_NAME, SQL_DIAG_MESSAGE_TEXT, SQL_DIAG_NATIVE, SQL_DIAG_NUMBER, SQL_DIAG_RETURNCODE, SQL_DIAG_SERVER_NAME или SQL_DIAG_SQLSTATE. Все остальные поля диагностики возвращают SQL_ERROR.
Поля заголовка
Поля заголовка, перечисленные в следующей таблице, можно включить в аргумент DiagIdentifier .
DiagIdentifier | Возвращаемый тип | Возвраты |
---|---|---|
SQL_DIAG_CURSOR_ROW_COUNT | SQLLEN | Это поле содержит количество строк в курсоре. Его семантика зависит от типов сведений SQLGetInfo SQL_DYNAMIC_CURSOR_ATTRIBUTES2, SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2, SQL_KEYSET_CURSOR_ATTRIBUTES2 и SQL_STATIC_CURSOR_ATTRIBUTES2, которые указывают, какие числа строк доступны для каждого типа курсора (в SQL_CA2_CRC_EXACT и SQL_CA2_CRC_APPROXIMATE битах). Содержимое этого поля определяется только для дескрипторов инструкций и только после вызова SQLExecute, SQLExecDirect или SQLMoreResults . Вызов SQLGetDiagField с diagIdentifier SQL_DIAG_CURSOR_ROW_COUNT, отличной от дескриптора инструкций, вернет SQL_ERROR. |
SQL_DIAG_DYNAMIC_FUNCTION | SQLCHAR * | Это строка, описывающая инструкцию SQL, выполняемую базовой функцией. (Дополнительные сведения см. в разделе "Значения полей динамической функции" далее в этом разделе. Содержимое этого поля определяется только для дескрипторов инструкций и только после вызова SQLExecute, SQLExecDirect или SQLMoreResults. Вызов SQLGetDiagField с diagIdentifier SQL_DIAG_DYNAMIC_FUNCTION, отличной от дескриптора инструкции, вернет SQL_ERROR. Значение этого поля не определено перед вызовом SQLExecute или SQLExecDirect. |
SQL_DIAG_DYNAMIC_FUNCTION_CODE | SQLINTEGER | Это числовой код, описывающий инструкцию SQL, которая была выполнена базовой функцией. (Дополнительные сведения см. в разделе "Значения полей динамической функции", далее в этом разделе. Содержимое этого поля определяется только для дескрипторов инструкций и только после вызова SQLExecute, SQLExecDirect или SQLMoreResults. Вызов SQLGetDiagField с diagIdentifier SQL_DIAG_DYNAMIC_FUNCTION_CODE, отличной от дескриптора инструкций, вернет SQL_ERROR. Значение этого поля не определено перед вызовом SQLExecute или SQLExecDirect. |
SQL_DIAG_NUMBER | SQLINTEGER | Количество записей состояния, доступных для указанного дескриптора. |
SQL_DIAG_RETURNCODE | SQLRETURN | Возвращает код, возвращаемый функцией. Список кодов возврата см. в разделе "Коды возврата". Драйверу не нужно реализовать SQL_DIAG_RETURNCODE; он всегда реализуется диспетчером драйверов. Если функция еще не была вызвана в дескрипторе, SQL_SUCCESS будет возвращена для SQL_DIAG_RETURNCODE. |
SQL_DIAG_ROW_COUNT | SQLLEN | Количество строк, затронутых вставкой, удалением или обновлением, выполняемым SQLExecute, SQLExecDirect, SQLBulkOperations или SQLSetPos. Он определяется драйвером после выполнения спецификации курсора. Содержимое этого поля определяется только для дескрипторов инструкций. Вызов SQLGetDiagField с diagIdentifier SQL_DIAG_ROW_COUNT, отличной от дескриптора инструкции, вернет SQL_ERROR. Данные в этом поле также возвращаются в аргументе RowCountPtr SQLRowCount. Данные в этом поле сбрасываются после каждого вызова недиагностичной функции, в то время как количество строк, возвращаемых SQLRowCount , остается неизменным, пока инструкция не будет возвращена в подготовленное или выделенное состояние. |
Поля записи
Поля записи, перечисленные в следующей таблице, можно включить в аргумент DiagIdentifier .
DiagIdentifier | Возвращаемый тип | Возвраты |
---|---|---|
SQL_DIAG_CLASS_ORIGIN | SQLCHAR * | Строка, указывающая документ, определяющий часть класса значения SQLSTATE в этой записи. Его значение равно ISO 9075 для всех SQLSTATEs, определенных интерфейсом open Group и ISO call-level. Для SQLSTATEs, зависящих от ODBC (все те, чьи класс SQLSTATE имеет значение "IM"), его значение равно ODBC 3.0. |
SQL_DIAG_COLUMN_NUMBER | SQLINTEGER | Если поле SQL_DIAG_ROW_NUMBER является допустимым номером строки в наборе строк или набором параметров, это поле содержит значение, представляющее номер столбца в результирующем наборе или номер параметра в наборе параметров. Число столбцов результирующих наборов всегда начинается с 1; Если эта запись состояния относится к столбцу закладки, поле может быть равно нулю. Номера параметров начинаются с 1. Он имеет значение SQL_NO_COLUMN_NUMBER, если запись состояния не связана с номером столбца или номером параметра. Если драйвер не может определить номер столбца или номер параметра, с которым связана эта запись, это поле имеет значение SQL_COLUMN_NUMBER_UNKNOWN. Содержимое этого поля определяется только для дескрипторов инструкций. |
SQL_DIAG_CONNECTION_NAME | SQLCHAR * | Строка, указывающая имя соединения, к которому связана диагностическая запись. Это поле определяется драйвером. Для структур диагностических данных, связанных с дескриптором среды, и для диагностики, не связанной с каким-либо подключением, это поле является строкой нулевой длины. |
SQL_DIAG_MESSAGE_TEXT | SQLCHAR * | Информационное сообщение об ошибке или предупреждении. Это поле отформатировано, как описано в разделе "Диагностические сообщения". Максимальная длина текста диагностического сообщения отсутствует. |
SQL_DIAG_NATIVE | SQLINTEGER | Собственный код ошибки драйвера или источника данных. Если код машинной ошибки отсутствует, драйвер возвращает значение 0. |
SQL_DIAG_ROW_NUMBER | SQLLEN | Это поле содержит номер строки в наборе строк или номер параметра в наборе параметров, с которым связана запись состояния. Номера строк и номера параметров начинаются с 1. Это поле имеет значение SQL_NO_ROW_NUMBER, если эта запись состояния не связана с номером строки или номером параметра. Если драйвер не может определить номер строки или номер параметра, с которым связана эта запись, это поле имеет значение SQL_ROW_NUMBER_UNKNOWN. Содержимое этого поля определяется только для дескрипторов инструкций. |
SQL_DIAG_SERVER_NAME | SQLCHAR * | Строка, указывающая имя сервера, к которому относится диагностическая запись. Это же значение, возвращаемое для вызова SQLGetInfo с параметром SQL_DATA_SOURCE_NAME. Для структур диагностических данных, связанных с дескриптором среды, и для диагностики, которые не связаны с любым сервером, это поле является строкой нулевой длины. |
SQL_DIAG_SQLSTATE | SQLCHAR * | Пятизначный диагностический код SQLSTATE. Дополнительные сведения см. в разделе SQLSTATEs. |
SQL_DIAG_SUBCLASS_ORIGIN | SQLCHAR * | Строка с тем же форматом и допустимыми значениями, что и SQL_DIAG_CLASS_ORIGIN, идентифицирующая определяющую часть подкласса части кода SQLSTATE. SqlSTATES, для которого возвращается ODBC 3.0, включает в себя следующее: 01S00, 01S01, 01S02, 01S06, 01S07, 07S01, 08S01, 21S01, 21S02, 25S01, 25S02, 25S03, 42S01, 42S02, 42S11, 42S12, 42S21, 42S22, HY095, HY097, HY098, HY099, HY099, HY099, HY100, HY101, HY105, HY107, HY109, HY110, HY111, HYT00, HYT01, IM001, IM002, IM003, IM004, IM005, IM006, IM007, IM008, IM010, IM011, IM012. |
Значения полей динамической функции
В следующей таблице описываются значения SQL_DIAG_DYNAMIC_FUNCTION и SQL_DIAG_DYNAMIC_FUNCTION_CODE, которые применяются к каждому типу инструкции SQL, выполняемой вызовом SQLExecute или SQLExecDirect. Драйвер может добавлять к перечисленным драйверу значения.
SQL statement выполнен |
Значение SQL_DIAG_DYNAMIC_FUNCTION |
Значение SQL_DIAG_DYNAMIC_FUNCTION_CODE |
---|---|---|
инструкция alter-domain-statement | ALTER DOMAIN | SQL_DIAG_ALTER_DOMAIN |
alter-table-statement | ALTER TABLE | SQL_DIAG_ALTER_TABLE |
определение утверждения | CREATEВЕРВЕР | SQL_DIAG_CREATE_ASSERTION |
определение символьного набора | CREATE CHARACTER SET (СОЗДАТЬ СИМВОЛЬНЫЙ НАБОР) | SQL_DIAG_CREATE_CHARACTER_SET |
Определение параметров сортировки | CREATE COLLATION | SQL_DIAG_CREATE_COLLATION |
domainn-definition | "CREATE DOMAIN" | SQL_DIAG_CREATE_DOMAIN |
инструкция create-index- | CREATE INDEX | SQL_DIAG_CREATE_INDEX |
инструкция create-table-statement | CREATE TABLE | SQL_DIAG_CREATE_TABLE |
Инструкция create-view- | CREATE VIEW | SQL_DIAG_CREATE_VIEW |
спецификация курсора | "SELECT CURSOR" | SQL_DIAG_SELECT_CURSOR |
Delete-statement-positioned | "ДИНАМИЧЕСКИЙ УДАЛЕННЫЙ КУРСОР" | SQL_DIAG_DYNAMIC_DELETE_CURSOR |
Delete-statement-searched | "DELETE WHERE" | SQL_DIAG_DELETE_WHERE |
drop-statement | "DROPВЕРВЕР" | SQL_DIAG_DROP_ASSERTION |
drop-character-set-stmt | DROP CHARACTER SET (DROP CHARACTER SET) | SQL_DIAG_DROP_CHARACTER_SET |
оператор drop-collation-statement | "DROP COLLATION" | SQL_DIAG_DROP_COLLATION |
инструкция drop-domain-statement | "DROP DOMAIN" | SQL_DIAG_DROP_DOMAIN |
оператор drop-index- | DROP INDEX | SQL_DIAG_DROP_INDEX |
drop-schema-statement | "DROP SCHEMA" | SQL_DIAG_DROP_SCHEMA |
drop-table-statement | DROP TABLE | SQL_DIAG_DROP_TABLE |
оператор drop-translation-statement | "DROP TRANSLATION" | SQL_DIAG_DROP_TRANSLATION |
оператор drop-view- | "DROP VIEW" | SQL_DIAG_DROP_VIEW |
Grantstatement | "GRANT" | SQL_DIAG_GRANT |
Инструкция insert- | "INSERT" | SQL_DIAG_INSERT |
ODBC-procedure-extension | "CALL" | вызов SQL_DIAG_ |
оператор revoke- | "ОТМЕНА" | SQL_DIAG_REVOKE |
Определение схемы | Create SCHEMA (CREATE SCHEMA) | SQL_DIAG_CREATE_SCHEMA |
определение перевода | CREATE TRANSLATION | SQL_DIAG_CREATE_TRANSLATION |
update-statement-positioned | "ДИНАМИЧЕСКИЙ КУРСОР ОБНОВЛЕНИЯ" | SQL_DIAG_DYNAMIC_UPDATE_CURSOR |
update-statement-searched | "UPDATE WHERE" | SQL_DIAG_UPDATE_WHERE |
Неизвестно | пустая строка | SQL_DIAG_UNKNOWN_STATEMENT |
Последовательность записей состояния
Записи состояния размещаются в последовательности на основе номера строки и типа диагностики. Диспетчер драйверов определяет окончательный порядок возврата записей состояния, создаваемых им. Драйвер определяет окончательный порядок возврата записей состояния, создаваемых им.
Если диагностические записи публикуются диспетчером драйверов и драйвером, диспетчер драйверов отвечает за их заказ.
Если есть две или более записей состояния, последовательность записей определяется первым номером строки. Следующие правила применяются к определению последовательности диагностических записей по строкам:
Записи, которые не соответствуют какой-либо строке, отображаются перед записями, соответствующими определенной строке, так как SQL_NO_ROW_NUMBER определен как -1.
Записи, для которых номер строки неизвестен перед всеми остальными записями, так как SQL_ROW_NUMBER_UNKNOWN определен как -2.
Для всех записей, относящихся к определенным строкам, записи сортируются по значению в поле SQL_DIAG_ROW_NUMBER. Перечислены все ошибки и предупреждения первой строки, а затем все ошибки и предупреждения следующей строки, и т. д.
Заметка
Диспетчер драйверов ODBC 3*.x* не упорядочивает записи состояния в очереди диагностики, если SQLSTATE 01S01 (ошибка в строке) возвращается драйвером ODBC 2*.x* или если SQLSTATE 01S (Ошибка в строке) возвращается драйвером ODBC 3*.x* при вызове SQLExtendedFetch или вызове SQLSetPos на курсоре, расположенном с помощью SQLExtendedFetch.
В каждой строке или для всех записей, которые не соответствуют строке или для которой номер строки неизвестен, или для всех этих записей с номером строки, равным SQL_NO_ROW_NUMBER, первая запись определяется с помощью набора правил сортировки. После первой записи порядок других записей, влияющих на строку, не определен. Приложение не может предположить, что ошибки предшествуют предупреждениям после первой записи. Приложения должны сканировать полную структуру диагностических данных, чтобы получить полные сведения о неудачном вызове функции.
Следующие правила используются для определения первой записи в строке. Запись с самым высоким рангом является первой записью. Источник записи (диспетчер драйверов, драйвер, шлюз и т. д.) не учитывается при ранжировании записей.
Записи о состоянии ошибок, описывающие ошибки, имеют самый высокий ранг. К ошибкам сортировки применяются следующие правила:
Записи, указывающие на сбой транзакции или возможный сбой транзакции, выделяющие все остальные записи.
Если две или более записей описывают одно и то же условие ошибки, то SQLSTATEs, определенные спецификацией Open Group CLI (классы 03–ГЦ), не используют ODBC и определяемые драйвером SQLSTATEs.
В соответствии с записями о состоянии значений данных , определяемыми драйвером, нет значений данных (класс 02) имеет второй самый высокий рейтинг.
Записи состояния предупреждений, описывающие предупреждения (класс 01), имеют самый низкий ранг. Если две или более записей описывают одно и то же условие предупреждения, то предупреждение SQLSTATEs, определенное спецификацией Open Group CLI, выдается определение ODBC и определяемые драйвером SQLSTATEs.
Связанные функции
Сведения | Раздел |
---|---|
Получение нескольких полей структуры диагностических данных | Функция SQLGetDiagRec |