此语句用于声明局部临时表。
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 中的任何一个的影响。如果使用临时表的过程被反复调用,且中间没有 COMMIT 或 ROLLBACK 操作,该子句很有用。
在某些情况下,NOT TRANSACTIONAL 子句可以提高性能,因为对非事务性临时表执行的操作不会导致在回退日志中生成条目。例如,如果反复调用使用临时表的过程而不会干预 COMMIT 或 ROLLBACK,则可以使用 NOT TRANSACTIONAL。
PCTFREE 指定希望为每个表页保留的可用空间的百分比。如果数据更新时行大小增加,将占用可用空间。如果表页中没有可用空间,则该页上的行大小每次增加时,行都需要在多个表页中拆分,从而导致行碎片并可能引起性能下降。
值 percent-free-space 是一个介于 0 和 100 之间的整数。前者指定每页上不保留剩余的可用空间:每页均完全填满。高值会将每行单独插入到页中。如果未设置 PCTFREE,则每页保留 200 字节。
DECLARE LOCAL TEMPORARY TABLE 语句声明临时表。有关 column-definition、column-constraint 和 table-constraint 的定义,请参见 CREATE TABLE 语句。
复合语句中声明的临时表存在于复合语句中。(请参见使用复合语句)。否则,声明的局部临时表在连接断开前一直存在。
当声明的临时表被显式删除以及超出范围时,该表的行将被删除。也可以使用 TRUNCATE 或 DELETE 显式删除行。
无。
无。
SQL/92 符合 SQL/92 标准。
SQL/99 核心 SQL 外部的 SQL/基础特性。
Sybase Adaptive Server Enterprise 不支持 DECLARE TEMPORARY TABLE。
下面的示例阐释如何在嵌入式 SQL 中声明临时表:
EXEC SQL DECLARE LOCAL TEMPORARY TABLE MyTable ( number INT );
下面的示例阐释如何在存储过程中声明临时表:
BEGIN
DECLARE LOCAL TEMPORARY TABLE TempTab (
number INT
);
...
ENDSQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。