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


Как вывести Непосредственное выполнение инструкции (ODBC)

Для выполнения инструкции непосредственно и только один раз

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

  2. Чтобы выполнить инструкцию, вызовите метод SQLExecDirect.

  3. При использовании входных параметров «данные при выполнении» SQLExecDirect возвращает 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. Для каждого маркера параметра:

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

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

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

    Установите любой текст данных при выполнении или параметры изображения.

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

  3. Чтобы выполнить инструкцию, вызовите метод SQLExecDirect. Драйвер эффективно выполнит инструкцию S раз, по одному разу для каждого набора параметров.

  4. При использовании входных параметров «данные при выполнении» SQLExecDirect возвращает 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. Для каждого маркера параметра необходимо вызвать функцию SQLBindParameter, чтобы указать значения данных параметра и указатель длины данных для их переменных в первом элементе массива структур, выделенных на Шаге 1. Если параметр является параметром времени выполнения функции, необходимо установить его.

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

  5. Чтобы выполнить инструкцию, вызовите метод SQLExecDirect. Драйвер эффективно выполнит инструкцию S раз, по одному разу для каждого набора параметров.

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

Примечание   Привязка на уровне столбцов и строк используются чаще совместно с функциями SQLPrepare и SQLExecute, чем с функцией SQLExecDirect.

См. также

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