Коды возврата ODBC
Каждая функция в ODBC возвращает код, известный как код возврата, который указывает на общий успех или сбой функции. Программная логика обычно основана на кодах возврата.
Например, следующий код вызывает SQLFetch , чтобы получить строки в результирующем наборе. Он проверка возвращает код возвращаемой функции, чтобы определить, был ли достигнут конец результирующий набор (SQL_NO_DATA), если были возвращены какие-либо предупреждения (SQL_SUCCESS_WITH_INFO), или произошла ошибка (SQL_ERROR).
SQLRETURN rc;
SQLHSTMT hstmt;
while ((rc=SQLFetch(hstmt)) != SQL_NO_DATA) {
if (rc == SQL_SUCCESS_WITH_INFO) {
// Call function to display warning information.
} else if (rc == SQL_ERROR) {
// Call function to display error information.
break;
}
// Process row.
}
Код возврата SQL_INVALID_HANDLE всегда указывает на программную ошибку, поэтому не должен встречаться во время выполнения. Все другие коды возврата предоставляют сведения времени выполнения, хотя SQL_ERROR может означать программную ошибку.
В следующей таблице определены коды возврата.
Код возврата | Description |
---|---|
SQL_SUCCESS | Функция успешно завершена. Приложение вызывает SQLGetDiagField для получения дополнительных сведений из записи заголовка. |
SQL_SUCCESS_WITH_INFO | Функция успешно завершена, возможно, с нефатальной ошибкой (предупреждением). Приложение вызывает SQLGetDiagRec или SQLGetDiagField для получения дополнительных сведений. |
SQL_ERROR | Сбой функции. Приложение вызывает SQLGetDiagRec или SQLGetDiagField для получения дополнительных сведений. Содержимое всех выходных аргументов функции не определено. |
SQL_INVALID_HANDLE | Сбой функции из-за недопустимой среды, соединения, инструкции или дескриптора. Это означает ошибку программирования. Дополнительные сведения не доступны из SQLGetDiagRec или SQLGetDiagField. Этот код возвращается только в том случае, если дескриптор имеет значение NULL или является неправильным типом, например, когда дескриптор инструкции передается для аргумента, требующего дескриптора соединения. |
SQL_NO_DATA | Больше данных не было доступно. Приложение вызывает SQLGetDiagRec или SQLGetDiagField для получения дополнительных сведений. Может быть возвращена одна или несколько записей состояния, определенных драйвером в классе 02xxx. Примечание. В ODBC 2.x, этот код возврата был назван SQL_NO_DATA_FOUND. |
SQL_NEED_DATA | Требуется больше данных, например при отправке данных параметров во время выполнения или дополнительных сведений о подключении. Приложение вызывает SQLGetDiagRec или SQLGetDiagField , чтобы получить дополнительные сведения, если таковые есть. |
SQL_STILL_EXECUTING | Функция, запущенная асинхронно, по-прежнему выполняется. Приложение вызывает SQLGetDiagRec или SQLGetDiagField , чтобы получить дополнительные сведения, если таковые есть. |