Как подготовить и выполнить инструкцию (ODBC)
Однократная подготовка инструкции и многократное ее выполнение
Вызовите метод SQLPrepare, чтобы подготовить инструкцию.
Можно также вызвать метод SQLNumParams, чтобы определить количество параметров в подготовленной инструкции.
Выполните следующие действия для каждого параметра подготовленной инструкции (необязательно):
Вызовите SQLDescribeParam для получения сведений о параметре.
Привяжите каждый параметр к переменной программы с помощью SQLBindParameter. Присвойте значения всем параметрам времени выполнения.
Перед каждым выполнением подготовленной инструкции:
Если в инструкции имеются маркеры параметров, поместите значения данных в буфер связанного параметра.
Вызовите функцию SQLExecute, чтобы выполнить подготовленную инструкцию.
При использовании входных параметров времени выполнения функция SQLExecute возвращает SQL_NEED_DATA. Отправьте данные по фрагментам при помощи функций SQLParamData и SQLPutData.
Подготовка инструкции с привязкой параметра на уровне столбца
Вызовите функцию SQLSetStmtAttr, чтобы задать следующие атрибуты.
Атрибуту SQL_ATTR_PARAMSET_SIZE задайте число наборов параметров (S).
Атрибуту SQL_ATTR_PARAM_BIND_TYPE задайте значение SQL_PARAMETER_BIND_BY_COLUMN.
Атрибут SQL_ATTR_PARAMS_PROCESSED_PTR должен указывать на переменную SQLUINTEGER, в которую помещается число обработанных параметров.
Задайте значение SQL_ATTR_PARAMS_STATUS_PTR, которое указывает на массив [S] переменных SQLUSSMALLINT, предназначенный для сохранения признаков состояния параметра.
Вызовите метод SQLPrepare, чтобы подготовить инструкцию.
Можно также вызвать метод SQLNumParams, чтобы определить количество параметров в подготовленной инструкции.
Для каждого параметра подготовленной инструкции вызовите SQLDescribeParam, чтобы получить сведения о параметре (необязательно).
Для каждого маркера параметра:
Выделите массив из S буферов параметра для сохранения значений данных.
Выделите массив из S буферов параметра для сохранения длин данных.
Вызовите функцию SQLBindParameter, чтобы связать массивы значений данных и длин данных с параметром инструкции.
Если параметр представляет собой параметр времени выполнения с типами данных text или image, присвойте ему значение.
Если используются параметры времени выполнения, присвойте им значения.
Перед каждым выполнением подготовленной инструкции:
Поместите значения и длины S-данных в массивы связанных параметров.
Вызовите метод SQLExecute, чтобы выполнить подготовленную инструкцию.
Если используются входные параметры данных времени выполнения, то метод SQLExecute возвращает значение SQL_NEED_DATA. Данные передаются фрагментами при помощи методов SQLParamData и SQLPutData.
Подготовка инструкции с привязкой параметра на уровне строки
Выделите массив структур [S], где S — число наборов параметров. Структура имеет по одному элементу для каждого параметра, а каждый элемент состоит из двух частей.
Первая часть — переменная соответствующего типа данных, в которую помещаются данные параметра.
Вторая часть — переменная SQLINTEGER, в которую помещается признак состояния.
Вызовите функцию SQLSetStmtAttr, чтобы задать следующие атрибуты.
Атрибуту SQL_ATTR_PARAMSET_SIZE задайте число наборов параметров (S).
Атрибуту SQL_ATTR_PARAM_BIND_TYPE задайте размер структуры, выделенной в шаге 1.
Атрибут SQL_ATTR_PARAMS_PROCESSED_PTR должен указывать на переменную SQLUINTEGER, в которую помещается число обработанных параметров.
Задайте значение SQL_ATTR_PARAMS_STATUS_PTR, которое указывает на массив [S] переменных SQLUSSMALLINT, предназначенный для сохранения признаков состояния параметра.
Вызовите метод SQLPrepare, чтобы подготовить инструкцию.
Для каждого маркера параметра вызовите функцию SQLBindParameter, чтобы связать значение данных параметра и указатель на длину его данных с соответствующими переменными в первом элементе массива структур, выделенных в шаге 1. Если параметр представляет собой параметр времени выполнения, присвойте ему значение.
Перед каждым выполнением подготовленной инструкции:
Заполните массив буфера привязанного параметра значениями данных.
Вызовите метод SQLExecute, чтобы выполнить подготовленную инструкцию. Драйвер эффективно выполнит инструкцию SQL S раз, по одному разу для каждого набора параметров.
Если используются входные параметры данных времени выполнения, то метод SQLExecute возвращает значение SQL_NEED_DATA. Данные передаются фрагментами при помощи методов SQLParamData и SQLPutData.