プロシージャ内でこの文を使用して、プロシージャが完了した後も、明示的に削除されるか接続が終了するまで保持されるローカル・テンポラリ・テーブルを作成します。
CREATE 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
column-definition、column-constraint、table-constraint、pctfree の定義については、CREATE TABLE 文を参照してください。
ON COMMIT 句 デフォルトでは、テンポラリ・テーブルのローは COMMIT のときに削除されます。ON COMMIT 句を使用すると、COMMIT のときにローを保護できます。
NOT TRANSACTIONAL 句 状況によっては、NOT TRANSACTIONAL 句を使用するとパフォーマンスが向上します。これは、トランザクション単位でないテンポラリ・テーブルでの操作では、ロールバック・ログにエントリが作成されないためです。たとえば、テンポラリ・テーブルを使用するプロシージャが COMMIT や ROLLBACK の介入を受けずに繰り返し呼び出される場合、NOT TRANSACTIONAL が有用です。
プロシージャの完了後も保持されるテーブルを作成する場合、DECLARE LOCAL TEMPORARY TABLE 文ではなく CREATE LOCAL TEMPORARY TABLE 文をプロシージャに使用します。CREATE LOCAL TEMPORARY TABLE 文を使用して作成されたローカル・テンポラリ・テーブルは、明示的に削除するか接続が終了するまで保持されます。
CREATE LOCAL TEMPORARY TABLE を使用して IF 文で作成されたローカル・テンポラリ・テーブルは、IF 文が完了した後も保持されます。
なし
なし
SQL/2003 コア SQL に含まれない SQL/基本機能。
次の例は、TempTab というローカル・テンポラリ・テーブルを作成します。
CREATE LOCAL TEMPORARY TABLE TempTab ( number INT ) ON COMMIT PRESERVE ROWS; |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |