Подготовка и выполнение инструкции (ODBC)
Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)
Однократная подготовка инструкции и многократное ее выполнение
Вызовите функцию 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.