В данном разделе рассмотрим два набора функций: функции управления каталогом и выполнения SQL – операторов. Функции управления каталогом возвращают информацию из системного каталога источника данных: имена таблиц, столбцов, табличную статистику и т. д. Функции выполнения операторов включают в себя функции непосредственного и подготовленного выполнения и связывания параметров.
Любая функция, которая имеет отношение к обработке или передаче SQL – оператора, требует в качестве параметра идентификатор оператора. Идентификатор оператора аналогичен идентификатору окружения или соединения за исключением того, что он ссылается на SQL – оператор. Идентификатор соединения может быть связан с несколькими идентификаторами операторов, но каждый идентификатор оператора связан только со своим идентификатором соединения. Назначение идентификатора оператора производится вызовом SQLAllocStmt(), которая выделяет область хранения в памяти для идентификатора оператора и связывает его с соединением, которое определяется собственным идентификатором.
Синтаксис для SQLAllocStmt() имеет вид:
RETCODE SQLAllocStmt(hdbc, phstmt)
Таблица 22 Описание параметров SQLAllocStmt()
Тип
Аргумент
Использование
Описание
HDBC
hdbc
Вход
Идентификатор соединения
HSTMT*
phstmt
Выход
Указатель области хранения в памяти для идентификатора оператора
Парная для SQLAllocStmt() функция SQLFreeStmt() выполняет следующие действия:
• останавливает любые SQL – операторы, которые в данный момент обрабатываются и связаны с заданным идентификатором оператора,
• закрывают любые открытые курсоры, которые имеют отношение к определенному идентификатору оператора,
• отбрасывает ожидаемые результаты,
• дополнительно, освобождает все ресурсы, связанные с определенным идентификатором оператора.
Синтаксис SQLFreeStmt() имеет следующий вид:
RETCODE SQLFreeStmt (hstmt, fOption)
Таблица 23 Функция SQLFreeStmt
Тип
Аргумент
Использование
Описание
HSTMT
hstmt
Вход
Идентификатор оператора
UWORD
fOption
Вход
Одна из следующих опций:
•SQL_CLOSE,
•SQL_DROP
•SQL_UNBIND
•SQL_RESET_PARAMS
Опция SQL_CLOSE отбрасывает неизвлечённые результаты и закрывает любые связанные с ними курсоры. Эта опция не влияет на соответствующие параметры, подготовленные операторы или соответствующие столбцы результата.
SQL_DROP освобождает все ресурсы, связанные с идентификатором, закрывает курсор, если он открыт и отбрасывает все ожидаемые строки результирующего множества. Эта опция завершает все обращения к hstmt, так как после успешного вызова SQLFreeStmt с этим параметром, идентификатор становится недействительным.
SQL_UNBIND освобождает (“отвязывает”) все буферы столбцов, связанные со столбцами результирующего множества запроса посредством SQLBindCol(). Описание данной функции приведено в разделе 2.5 данного методического пособия.
SQL_RESET_PARAMS освобождает все буферы параметров с фактическими значениями, связанные с маркерами параметров строки запроса. Связывание формальных параметров запроса (маркеров) с буферами фактических значений производится функцией SQLBindParametr(), описание которой приводится ниже в данном разделе.