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

Модули встроенного языка

Назначение

Операторы объявления начала и окончания модуля встроенного языка предназначены для ограничения области видимости переменных встроенного языка и переменных основного языка, объявленных в секциях деклараций внутри модуля.

Синтаксис

   
<начало модуля>::= EXEC SQL MODULE <имя модуля>;
<конец модуля>::= EXEC SQL END MODULE <имя модуля>;
<имя модуля> – имя переменной встроенного SQL

Модуль встроенного SQL имеет следующую структуру:

<модуль>::=
  <начало модуля>
  <предложения встроенного языка и/или основного языка>
  . . . .
  <конец модуля>

Описание

  1. Все переменные встроенного языка, объявленные внутри модуля, являются локальными переменными и видны только в пределах данного модуля.

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

  3. Все локальные переменные встроенного языка одного типа в одном модуле должны иметь уникальные имена. Допускается использование этих же имен в других модулях встроенного языка. Если в модуле встроенного языка декларируется переменная с именем, совпадающим с именем глобальной переменной, то в этом модуле используется локальная переменная с таким именем.

  4. Вложенность модулей встроенного SQL не допускается.

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

  6. Каждый модуль должен иметь уникальное имя.

Пример

void f(char*query){
strcpy(Query,query);
EXEC SQL MODULE module1;
EXEC SQL BEGIN DECLARE SECTION;
char Query[512];
EXEC SQL END DECLARE SECTION;
EXEC SQL PREPARE ST FROM :Query;
EXEC SQL DECLARE CR CURSOR_PCI FOR ST;
EXEC SQL OPEN CR;
EXEC SQL UPDATE example SET name='Name' WHERE
CURRENT OF CR;
EXEC SQL CLOSE CR;
EXEC SQL END MODULE module1;
}

Примечание

Следует отличать модули встроенного языка (прекомпилятора) от модулей основного языка.

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