Доступные версии документации

Привязка динамических параметров

Назначение

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

Синтаксис
 

Прекомпилятор встроенного SQL распознает и обрабатывает два формата данного предложения:

  • формат 1 – синтаксис, используемый в предыдущих версиях прекомпилятора и оставленный для совместимости с разработанными приложениями, не рекомендуется для использования в новых проектах;

  • формат 2 – синтаксис данной версии прекомпилятора.

Формат 1 (устаревший):

<привязка входных параметров>::=
EXEC SQL DESCRIBE BIND VARIABLES FOR <имя предложения>
INTO <имя дескрипторной переменной типа t_sqlda)>;

Формат 2:

<привязка входных параметров>::=
EXEC SQL DESCRIBE INPUT <имя предложения>
{ USING | INTO } SQL DESCRIPTOR <имя дескриптора>;

Формат 1 (устаревший):

<привязка выходных параметров>::=
EXEC SQL DESCRIBE SELECT LIST FOR <имя предложения>
INTO <имя дескрипторной переменной типа t_sqlda >;

Формат 2:

<привязка выходных параметров>::=
EXEC SQL DESCRIBE [ OUTPUT ] <имя предложения>
{ USING | INTO } SQL DESCRIPTOR <имя дескриптора>;
Описание
  1. <Имя предложения> – переменная прекомпилятора, которая должна быть ранее объявлена в DECLARE STATEMENT или использована в операторе PREPARE.

  2. <Имя дескриптора> – переменная встроенного языка, должна быть уникальной или переменной основного языка типа DESCRIPTOR. В этом случае перед именем ставится двоеточие.

  3. Дескриптору <имя дескриптора> необходимо предварительно выделить память (оператор ALLOCATE DESCRIPTOR) для описателей, число которых должно быть не меньше числа динамических параметров в <имени предложения>.

  4. Привязка выходных параметров допустима только для select-запросов и вызова хранимых процедур.

  5. Так как привязка дескриптора выполняется к уже подготовленному предложению, информация о количестве входных и выходных параметров, их типах, длинах, точности представления данных и др. (кроме значений параметров) известна, поэтому при выполнении оператора все сведения автоматически вносятся в дескриптор.

  6. Значения входным параметрам должны присваиваться приложением с помощью оператора SET DESCRIPTOR (или путем явного присвоения значений полям структуры sqlda, соответствующей данному дескриптору, что строго не рекомендуется).

  7. Для select-запросов (для каждого выбираемого значения) в описатель параметра заносятся имя, тип и длина выбираемого значения. Если для выбираемого имени задан псевдоним, в описатель параметра помещается имя псевдонима.

  8. Если предложение является конструкцией UNION c несколькими select-запросами, то в качестве имен параметров используются имена из первого select-запроса.

  9. Для хранимых процедур для каждого параметра процедуры типа OUT, INOUT в описатель параметра заносятся имя, тип и длина выбираемого значения.

  10. Оператор SQL DESCRIBE используется для получения информации о параметрах динамического предложения SQL.

  11. Оператор SET DESCRIPTOR применяется в следующих случаях:

    • для привязки переменных основного языка путем задания атрибутов TYPE, LENGTH, DATA основной переменной;

    • при заполнении описателей параметров в дескрипторе для еще не подготовленного предложения. В этом случае после подготовки предложения необходимость в операторе SQL DESCRIBE отпадает.

Заметили ошибку?
Выделите текст и нажмите Ctrl + Enter