Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
ローカルテンポラリテーブルを宣言します。
DECLARE LOCAL TEMPORARY TABLE table-name ( { column-definition [ column-constraint ... ] | table-constraint | pctfree }, ... ) [ ON COMMIT { DELETE | PRESERVE } ROWS | NOT TRANSACTIONAL ]
pctfree : PCTFREE percent-free-space
percent-free-space : integer
ON COMMIT 句 デフォルトでは、テンポラリテーブルのローは COMMIT のときに削除されます。ON COMMIT 句を使用すると、COMMIT のときにローを保護できます。
NOT TRANSACTIONAL 句 この句を使用して作成されたテーブルは、COMMIT と ROLLBACK のいずれの影響も受けません。状況によっては、NOT TRANSACTIONAL 句を使用するとパフォーマンスが向上します。これは、トランザクション単位でないテンポラリテーブルでの操作では、ロールバックログにエントリが作成されないためです。たとえば、テンポラリテーブルを使用するプロシージャーが COMMIT や ROLLBACK の介入を受けずに繰り返し呼び出される場合、NOT TRANSACTIONAL が有用です。
REFERENCES column-constraint および FOREIGN KEY table-constraint は、ローカルテンポラリテーブルに対して使用できません。
DECLARE LOCAL TEMPORARY TABLE 文はテンポラリテーブルを宣言します。
DECLARE LOCAL TEMPORARY TABLE を使用して作成されたテーブルは、システムカタログの SYSTABLE ビューに表示されません。
宣言されたテンポラリテーブルのローは、テーブルが明示的に削除されたとき、またはスコープ外になったときに削除されます。TRUNCATE または DELETE を使用して、明示的にローを削除することもできます。
複合文内で宣言されたローカルテンポラリテーブルは、複合文内に存在します。それ以外の場合、宣言されたローカルテンポラリテーブルは接続の終わりまで存在します。
同じスコープ内にある 2 つのローカルテンポラリテーブルは、同じ名前にはできません。ベーステーブルと同じ名前のテンポラリテーブルを作成すると、ローカルテンポラリテーブルのスコープが終了した時点で、そのベーステーブルは、その接続内でのみ参照できるようになります。接続では、既存のテンポラリテーブルと同じ名前のベーステーブルを作成できません。
プロシージャーの完了後も保持されるローカルテンポラリテーブルをプロシージャーで作成するには、代わりに CREATE LOCAL TEMPORARY TABLE 文を使用します
なし
SQL/2008 DECLARE LOCAL TEMPORARY TABLE は、SQL/2008 標準のオプションの言語機能 F531 の一部です。PCTFREE 句と NOT TRANSACTIONAL 句はベンダー拡張です。また、文によって定義されたカラムと制約の定義にも、ベンダー拡張の構文を含めることができます。SQL/2008 では、DECLARE LOCAL TEMPORARY TABLE 文によって作成されるテーブルをシステムカタログに表示することが規定されていますが、SQL Anywhere では表示されません。
Transact-SQL DECLARE LOCAL TEMPORARY TABLE は、Adaptive Server Enterprise ではサポートされません。Sybase Adaptive Server Enterprise では、特殊文字 # で始まるテーブル名を使用して CREATE TABLE 文でテンポラリテーブルを作成します。
次の例は、ストアドプロシージャー内のテンポラリテーブルの宣言方法を示します。
BEGIN DECLARE LOCAL TEMPORARY TABLE TempTab ( number INT ); ... END