Правильная ссылка на эту страницу
http://az-design.ru/Support/DataBase/SQL/SQL92/SQL92-2Declare_local.shtml

DECLARE LOCAL TEMPORARY TABLE
Определяет локальную временную таблицу

Синтаксис

DECLARE LOCAL TEMPORARY TABLE составное имя таблицы
       ({определение столбца
       |[ограничение таблицы]}.,..
        [ON COMMIT {DELETE|PRESERVE} ROWS]);

Использование
       Временные таблицы, в отличие от представлений, содержат свои собственные данные, однако их содержимое не сохраняется между сеансами связи. Для объявленной локальной временной таблицы, которая создается данным оператором, не сохраняются даже определения таблицы, поскольку она определяется только на время исполнения приложения (два других типа временных таблиц, определения которых должны сохраняться, создаются при помощи оператора CREATE TABLE). Оператор DECLARE LOCAL TEMPORARY TABLE используется в модулях SQL или в некоторых реализациях встроенного SQL. Объявленная таблица создается при исполнении такого программного модуля.
       Когда исполнение модуля или эмуляция компилирующего блока завершается, определение объявленной локальной временной таблицы (в дальнейшем такая таблица будет называться просто объявленной) уничтожается. Иными словами, при завершении модуля исполняется оператор DROP TABLE. Поскольку определения объявленных таблиц не являются постоянной частью базы данных, то они не записываются в информационную схему.

Примечание:
       В модульном языке всем процедурам, содержащим SQL-операторы, должны предшествовать объявления временных таблиц.
       Объявленные таблицы не являются такими же объектами схемы, как другие таблицы. Схема, в которой они используются, устанавливается ("вычисляется") некоторым, зависящим от реализации, способом из идентификатора SQL-сеанса и имени модуля. Поскольку при написании статического SQL-кода, как правило, неизвестно, каким будет идентификатор SQL-сеанса, то стандарт предусматривает наличие встроенной переменной, которая служит для представления схемы. Эта переменная обозначается ключевым словом MODULE, которое всегда используется в качестве префикса в имени объявленной таблицы, как если бы она была частью схемы, например, MODULE.
MY_TABLE. Данный подход позволяет определить для каждого сеанса, вызывающего модуль, уникальный экземпляр таблицы. Каждый такой экземпляр будет невидим для других сеансов или модулей. Если используется не модульный, а динамический или встроенный SQL, то необходимо эмулировать этот же подход.
       Для объявленных таблиц сохраняются все те же правила для столбцов, типов данных, ограничений и значений по умолчанию, что и для других временных таблиц, создаваемых оператором CREATE TABLE. Точно так же исполняется и предложение ON COMMIT: если определено DELETE ROWS (это значение по умолчанию), то при завершении каждой транзакции таблица автоматически очищается (стираются все значения таблицы). В то же время определение таблицы будет сохраняться после завершения транзакции, поэтому второй оператор DECLARE TABLE для объявления таблицы внутри такого же модуля не нужен. Если используется предложение PRESERVE ROWS, таблица будет очищаться только в конце сеанса или при уничтожении (в зависимости от того, что произойдет раньше). Таблица уничтожается при завершении исполнения модуля или эмуляции компилирующего блока, которые содержат оператор DECLARE.

Пример
       Приведенный ниже оператор создает временную таблицу под названием "Daily_Stats", которая предположительно должна содержать данные, используемые приложением для дальнейших вычислений. Значения, которые заносятся в таблицу, сохранятся в ней до завершения сеанса или до выполнения оператора DROP TABLE.

DECLARE LOCAL TEMPORARY TABLE Daily_Stats
       (statnum  INTEGER PRIMARY KEY,
        average  DECIMAL,
        maximum  DECIMAL,
        minimum  DECIMAL
        ON COMMIT PRESERVE ROWS);

Уровни соответствия

Intermed   Приложения этого уровня не нуждаются в поддержке данного оператора

См. также
       главу II операторы CREATE SCHEMA, CREATE TABLE, DROP TABLE, GRANT, главу III раздел "Идентификаторы авторизации", приложение В.


  Оглавление
Начало раздела
След.>>




Дата последнего изменения:
Thursday, 21-Aug-2014 09:10:55 MSK


Постоянный адрес статьи:
http://az-design.ru/Support/DataBase/SQL/SQL92/SQL92-2Declare_local.shtml