Все функции ODBC возвращают коды, чтобы показать в каком состоянии выполнения находится та или иная функция. Код возврата или RETCODE указывает на то, был ли вызов функции ошибочным или нет не указывает точной причины возникновения той или иной ошибки. В таблице 18 приведены коды возврата ODBC и их краткие описания.
Таблица 18 Коды возврата ODBC
Код возврата
Описание
SQL_SUCCESS
Функция выполнена успешно, информация об ошибке отсутствует
SQL_SUCCESS_WITH_INFO
Функция выполнена успешно, однако есть некоторая предупреждающая информация
SQL_NO_DATA_FOUND
Все строки результирующего множества извлечены. Это не является ошибкой, но указывает, что больше не осталось информации для выборки
SQL_ERROR
Ошибка в процессе выполнения данной функции. Имеется дополнительная информация об ошибке для восстановления.
SQL_INVALID_HANDLE
Возвращается функцией ODBC в случае, если какой-нибудь из идентификаторов-параметров данной функции является недействительным
SQL_STILL_EXECUTING
Возвращается какой-либо асинхронно выполняющейся функцией, находящейся в процессе выполнения
Продолжение таблицы 18
SQL_NEED_DATA
Возвращается функциями исполнения SQL – оператора в случае определения параметров операторов во время выполнения.
Проверка кодов возврата может выполняться посредством макросов RETCODE_IS_FAILURE или RETCODE_IS_SUCCESSFUL. Данные макросы приведены ниже:
Для использования макросов в программах ODBC, необходимо применять переменные типа кодов возврата, т.е. типа RETCODE, например:
#include <sql.h>
#include <windows.h>
RETCODE rc;
HENV henv;
rc=SQLAllocEnv(&henv);
if (RETCODE_IS_SUCCESSFULL(rc))
{операторы, выполняющиеся в случае истинности условия
оператора if };
В приведенном примере переменная rc предназначена для определения кода возврата функции SQLAllocEnv() (более подробное описание этой и других функций в последующих параграфах)
Основной алгоритм программ, использующих интерфейс ODBC, представлен на рисунке 38 в виде элементарной блок-схемы.
Как видно из рисунка любая программа с использованием ODBC может быть разделена на три основные части: инициализация, обработка SQL – оператора и завершение программы. Главной частью программы ODBC является обработка SQL – оператора, которая в свою очередь, как показано далее может быть разбита на собственные составные части. В ODBC, так же как и в PL/SQL при обработке произвольного SQL-оператора, необходимо выполнять связывание параметров. Собственно связывание выполняет драйвер ODBC, однако программа посредством API-функций должна корректно указать какие данные “связываются” и как в процессе связывание их трактовать. Если выполняемая инструкция это запрос на извлечение информации из базы данных, программа должна указать, куда считывать строки результирующего множества оператора и считать их.
Далее рассмотрим функции, успешные вызовы которых необходимы для выполнения программы в соответствии с указанной схемой по указанным частям. Начнем с частей инициализации и завершения.