Бөлісу құралы:


Коды возврата 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 Сбой функции. Приложение вызывает SQLGetDiagRec или SQLGetDiagField для получения дополнительных сведений. Содержимое всех выходных аргументов функции не определено.
SQL_INVALID_HANDLE Произошла ошибка выполнения функции из-за неправильной среды, соединения, запроса или дескриптора. Это означает ошибку программирования. Дополнительные сведения не доступны из SQLGetDiagRec или SQLGetDiagField. Этот код возвращается только в том случае, если дескриптор имеет значение NULL или является неправильным типом, например, когда дескриптор инструкции передается для аргумента, требующего дескриптора соединения.
ДАННЫХ_НЕТ Больше данных не было доступно. Приложение вызывает SQLGetDiagRec или SQLGetDiagField для получения дополнительных сведений. Может быть возвращена одна или несколько записей состояния, определенных драйвером в классе 02xxx. Примечание: В ODBC 2. x, этот код возврата был назван SQL_NO_DATA_FOUND.
SQL_NEED_DATA Требуется больше данных, например при отправке данных параметров во время выполнения или дополнительных сведений о подключении. Приложение вызывает SQLGetDiagRec или SQLGetDiagField , чтобы получить дополнительные сведения, если таковые есть.
SQL_STILL_EXECUTING Функция, запущенная асинхронно, по-прежнему выполняется. Приложение вызывает SQLGetDiagRec или SQLGetDiagField , чтобы получить дополнительные сведения, если таковые есть.