Модули встроенного языка
Назначение
Операторы объявления начала и окончания модуля встроенного языка предназначены для ограничения области видимости переменных встроенного языка и переменных основного языка, объявленных в секциях деклараций внутри модуля.
Синтаксис
< начало модуля >::= EXEC SQL MODULE < имя модуля >; < конец модуля >::= EXEC SQL END MODULE < имя модуля >; < имя модуля > – имя переменной встроенного SQL
Модуль встроенного SQL имеет следующую структуру:
< модуль >::= < начало модуля > < предложения встроенного языка и/или основного языка > . . . . < конец модуля >
Описание
-
Все переменные встроенного языка, объявленные внутри модуля, являются локальными переменными и видны только в пределах данного модуля.
-
Все переменные основного языка, объявленные в секциях деклараций внутри модуля, являются локальными.
-
Все локальные переменные встроенного языка одного типа в одном модуле должны иметь уникальные имена. Допускается использование этих же имен в других модулях встроенного языка. Если в модуле встроенного языка декларируется переменная с именем, совпадающим с именем глобальной переменной, то в этом модуле используется локальная переменная с таким именем.
-
Вложенность модулей встроенного SQL не допускается.
-
Декларации начала и конца модуля должны находиться в одном и том же блоке основного языка.
-
Каждый модуль должен иметь уникальное имя.
Пример
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; }
Примечание
Следует отличать модули встроенного языка (прекомпилятора) от модулей основного языка.