【发布时间】:2024-10-21 03:00:02
【问题描述】:
我是 SQL 新手。我想在 Oracle SQL 中创建一个(全局或非全局)临时表,其中将包含SELECT * FROM tbl_NAME WHERE... 形式的简单数据选择,并且在我的会话结束后将被删除(就像 MSFT SQL 临时表一样形成##tbl_NAME)。
我在网上发现一种方法是:
CREATE GLOBAL TEMPORARY TABLE tmp_table
SELECT * FROM tbl_NAME WHERE conditions.
ON COMMIT PRESERVE ROWS;
虽然我收到错误 ORA-00904: invalid identifier
我还发现另一种选择是
CREATE PRIVATE TEMPORARY TABLE tmp_table AS
SELECT * FROM tbl_NAME WHERE conditions;
给出错误 ORA-00905: missing keyword。
请注意,我已经知道一种可行的替代方法是:
DROP TABLE tmp_table;
CREATE TABLE tmp_table AS
SELECT * FROM tbl_NAME;
DROP TABLE tmp_table;
【问题讨论】:
-
仅供参考:Tom Kyte 总是 warns 关于 MS SQL 人员在 Oracle 中使用临时表而不是子选择。
标签: sql oracle temp-tables