我想在Oracle数据库中创建一个临时表
就像是
Declare table @table (int id)
Run Code Online (Sandbox Code Playgroud)
在SQL服务器中
而不是用select语句填充它
可能吗?
谢谢
ham*_*mcn 127
是的,Oracle有临时表.这是一篇描述它们的AskTom文章的链接,这里是官方的oracle CREATE TABLE文档.
但是,在Oracle中,只有临时表中的数据是临时的.该表是其他会话可见的常规对象.在Oracle中频繁创建和删除临时表是一种不好的做法.
CREATE GLOBAL TEMPORARY TABLE today_sales(order_id NUMBER)
ON COMMIT PRESERVE ROWS;
Run Code Online (Sandbox Code Playgroud)
Oracle 18c添加了私有临时表,它们是单会话内存中对象.有关详细信息,请参阅文档.可以动态创建和删除私有临时表.
CREATE PRIVATE TEMPORARY TABLE ora$ptt_today_sales AS
SELECT * FROM orders WHERE order_date = SYSDATE;
Run Code Online (Sandbox Code Playgroud)
临时表可能很有用,但它们通常在Oracle中被滥用.通过使用内联视图将多个步骤组合到单个SQL语句中,通常可以避免它们.
Mat*_*son 73
只是一个提示.. Oracle中的临时表与SQL Server不同.您创建ONCE并且仅创建ONCE,而不是每个会话.您插入其中的行仅对您的会话可见,并且当您结束会话(或事务结束,具体取决于您使用的"ON COMMIT"子句)时会自动删除(即,TRUNCATE
不会DROP
).
小智 33
CREATE GLOBAL TEMPORARY TABLE Table_name
(startdate DATE,
enddate DATE,
class CHAR(20))
ON COMMIT DELETE ROWS;
Run Code Online (Sandbox Code Playgroud)