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

Подготовка предложения к выполнению

Назначение

Подготовка предложения SQL к выполнению.

Синтаксис

   
<подготовка предложения>::=
EXEC SQL [ AT<переменная типа «соединение»> ]
  PREPARE <переменная типа «предложение»>
  FROM <предложение>;
  <предложение>::=
  {<предложение SQL>
  |<строковый литерал>
  |<переменная основного языка>}

Описание

  1. <Переменная типа «предложение»> не обязательно должна быть ранее объявлена в операторе DECLARE STATEMENT.

  2. <Предложение SQL> может быть любым исполняемым предложением СУБД ЛИНТЕР. Оно может содержать входные и выходные именованные и неименованные параметры. После выполнения PREPARE именованные параметры будут привязаны к предложению, и станет возможным его дальнейшее выполнение без повторной привязки параметров (т.е. без выполнения операторов USING, INTO).

  3. Если <предложение> представлено <строковым литералом> или <переменной основного языка>, то его текст неизвестен во время прекомпиляции. Для работы с такими предложениями используется динамический SQL.

  4. В результате выполнения оператора PREPARE с указанной переменной встроенного языка типа «предложение» связываются заданный текст предложения SQL и набор параметров, подготавливая таким образом предложение к дальнейшему выполнению.

  5. Подготовленное предложение далее может быть выполнено либо с помощью оператора EXECUTE, либо (если для него объявлен курсор) с помощью комбинации операторов OPEN, FETCH и CLOSE, при этом во фразах USING и INTO можно задавать входные и выходные переменные.

  6. Необходимо учитывать, что привязанные переменные основного языка должны быть видны в момент исполнения предложения. Т.е. если секция деклараций переменных основного языка содержится в некотором блоке основного языка, то и оператор исполнения предложения, содержащего привязанные переменные, должен содержаться в том же блоке.

Пример

Void f()
{
EXEC SQL MODULE M1;
EXEC SQL BEGIN DECLARE SECTION;
char*Name = “Vasia”; /* строка задана без явного указания длины */
char*Fname = “Pupkin”;
EXEC SQL END DECLARE SECTION;
EXEC SQL DECLARE ST STATEMENT; /* объявили предложение (необязательно) */
EXEC SQL PREPARE ST FROM update person set phone='7779888' where name= :Name and firstnam=:Fname; /* подготовили предложение к выполнению */
EXEC SQL EXECUTE ST; /* выполнили предложение, используя привязанные оператором PREPARE параметры */
EXEC SQL END MODULE M1;
}
Заметили ошибку?
Выделите текст и нажмите Ctrl + Enter