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


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

Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)

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

  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.

См. также

Инструкции по выполнению запросов (ODBC)