Поделиться через


Как подготовить и выполнить инструкцию (ODBC)

Однократная подготовка инструкции и многократное ее выполнение

  1. Вызовите метод SQLPrepare, чтобы подготовить инструкцию.

  2. Можно также вызвать метод SQLNumParams, чтобы определить количество параметров в подготовленной инструкции.

  3. Выполните следующие действия для каждого параметра подготовленной инструкции (необязательно):

    • Вызовите SQLDescribeParam для получения сведений о параметре.

    • Привяжите каждый параметр к переменной программы с помощью SQLBindParameter. Присвойте значения всем параметрам времени выполнения.

  4. Перед каждым выполнением подготовленной инструкции:

    • Если в инструкции имеются маркеры параметров, поместите значения данных в буфер связанного параметра.

    • Вызовите функцию SQLExecute, чтобы выполнить подготовленную инструкцию.

    • При использовании входных параметров времени выполнения функция SQLExecute возвращает SQL_NEED_DATA. Отправьте данные по фрагментам при помощи функций SQLParamData и SQLPutData.

Подготовка инструкции с привязкой параметра на уровне столбца

  1. Вызовите функцию 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, предназначенный для сохранения признаков состояния параметра.

  2. Вызовите метод SQLPrepare, чтобы подготовить инструкцию.

  3. Можно также вызвать метод SQLNumParams, чтобы определить количество параметров в подготовленной инструкции.

  4. Для каждого параметра подготовленной инструкции вызовите SQLDescribeParam, чтобы получить сведения о параметре (необязательно).

  5. Для каждого маркера параметра:

    • Выделите массив из S буферов параметра для сохранения значений данных.

    • Выделите массив из S буферов параметра для сохранения длин данных.

    • Вызовите функцию SQLBindParameter, чтобы связать массивы значений данных и длин данных с параметром инструкции.

    • Если параметр представляет собой параметр времени выполнения с типами данных text или image, присвойте ему значение.

    • Если используются параметры времени выполнения, присвойте им значения.

  6. Перед каждым выполнением подготовленной инструкции:

    • Поместите значения и длины S-данных в массивы связанных параметров.

    • Вызовите метод SQLExecute, чтобы выполнить подготовленную инструкцию.

    • Если используются входные параметры данных времени выполнения, то метод SQLExecute возвращает значение SQL_NEED_DATA. Данные передаются фрагментами при помощи методов SQLParamData и SQLPutData.

Подготовка инструкции с привязкой параметра на уровне строки

  1. Выделите массив структур [S], где S — число наборов параметров. Структура имеет по одному элементу для каждого параметра, а каждый элемент состоит из двух частей.

    • Первая часть — переменная соответствующего типа данных, в которую помещаются данные параметра.

    • Вторая часть — переменная SQLINTEGER, в которую помещается признак состояния.

  2. Вызовите функцию 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, предназначенный для сохранения признаков состояния параметра.

  3. Вызовите метод SQLPrepare, чтобы подготовить инструкцию.

  4. Для каждого маркера параметра вызовите функцию SQLBindParameter, чтобы связать значение данных параметра и указатель на длину его данных с соответствующими переменными в первом элементе массива структур, выделенных в шаге 1. Если параметр представляет собой параметр времени выполнения, присвойте ему значение.

  5. Перед каждым выполнением подготовленной инструкции:

    • Заполните массив буфера привязанного параметра значениями данных.

    • Вызовите метод SQLExecute, чтобы выполнить подготовленную инструкцию. Драйвер эффективно выполнит инструкцию SQL S раз, по одному разу для каждого набора параметров.

    • Если используются входные параметры данных времени выполнения, то метод SQLExecute возвращает значение SQL_NEED_DATA. Данные передаются фрагментами при помощи методов SQLParamData и SQLPutData.

См. также

Другие ресурсы