Collection Contents 上一页 下一页 PDF

ASA SQL 参考

SQL 语句

DECLARE LOCAL TEMPORARY TABLE 语句


说明 

此语句用于声明局部临时表。

语法 

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-definitioncolumn-constrainttable-constraint 的定义,请参见 CREATE TABLE 语句

复合语句中声明的临时表存在于复合语句中。(请参见使用复合语句)。否则,声明的局部临时表在连接断开前一直存在。

当声明的临时表被显式删除以及超出范围时,该表的行将被删除。也可以使用 TRUNCATE 或 DELETE 显式删除行。

权限 

无。

副作用 

无。

另请参见 
标准和兼容性 
示例 

下面的示例阐释如何在嵌入式 SQL 中声明临时表:

EXEC SQL DECLARE LOCAL TEMPORARY TABLE MyTable (
  number INT
   );

下面的示例阐释如何在存储过程中声明临时表:

BEGIN
  DECLARE LOCAL TEMPORARY TABLE TempTab (
    number INT
  );
  ...
END

Collection Contents 上一页 下一页 PDF