Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
可在过程内创建局部临时表,而此表将在过程完成后一直保留,直到被显式删除或连接终止。
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 可能会非常有用。
在过程中,如果要创建一个在过程完成后仍然保留的表,可使用 CREATE LOCAL TEMPORARY TABLE 语句,而不是 DECLARE LOCAL TEMPORARY TABLE 语句。使用 CREATE LOCAL TEMPORARY TABLE 语句创建的局部临时表会一直保留到它被显式删除或连接终止。
使用 CREATE LOCAL TEMPORARY TABLE 创建的表不会出现在系统目录的 SYSTABLE 视图中。
利用使用 CREATE LOCAL TEMPORARY TABLE 的 IF 语句创建的局部临时表,在 IF 语句完成后也会继续保留。
无。
SQL/2008 CREATE LOCAL TEMPORARY TABLE 是 SQL/2008 标准的可选语言功能 F531 的一部分。PCTFREE 和 NOT TRANSACTIONAL 子句是服务商扩充。通过该语句定义的列和约束定义也可以包括服务商扩充语法。在 SQL/2008 中,该标准规定通过 CREATE LOCAL TEMPORARY TABLE 语句创建的表出现在系统目录中;但对于 SQL Anywhere 却不是这样。
Transact-SQL Adaptive Server Enterprise 不支持 CREATE LOCAL TEMPORARY TABLE。在 Sybase Adaptive Server Enterprise 中,使用 CREATE TABLE 语句通过以特殊字符 '#' 开头的表名创建临时表。请参见CREATE TABLE 语句。
以下示例将创建一个名为 TempTab 的本地临时表:
CREATE LOCAL TEMPORARY TABLE TempTab ( number INT ) ON COMMIT PRESERVE ROWS;