如何使用 ANSI SQL 创建临时表?
Posted
技术标签:
【中文标题】如何使用 ANSI SQL 创建临时表?【英文标题】:How can I create a temporary table using ANSI SQL? 【发布时间】:2017-12-26 12:49:29 【问题描述】:我想使用 ANSI SQL 创建一个临时表,以便可以使用相同的查询在 ORACLE 和 MSSQL 中创建表。
【问题讨论】:
你不能。创建临时表没有标准。这是特定于供应商的。 临时表包含在 ANSI SQL(功能 F531)中,但大多数产品都以自己的方式执行... 【参考方案1】:Create temporary table using the following statement
CREATE GLOBAL TEMPORARY TABLE my_temp_table (
id NUMBER,
description VARCHAR2(20)
)
ON COMMIT PRESERVE ROWS;
ON COMMIT PRESERVE ROWS clause indicates that rows should persist beyond the end of the transaction. They will only be removed at the end of the session.
【讨论】:
这仅适用于 Oracle,不适用于 MSSQL。我想在 ANSI SQL 中这样做,这样它就不会依赖于数据库。 @Ashutosh 这并不总是可能的,每个数据库都有自己的一组关键字和数据类型。没有适用于所有数据库的单一语法。 @Sudipta 我明白这一点。我正在努力更改实现,以便它根据使用的数据库选择查询。我现在面临的问题是我需要在 DB2、MSSQL 和 Oracle 的单个查询中实现“仅当存在 Else Truncate 时才创建表”。你有什么建议吗? 没有针对单个查询的建议。至少不能在我知道的 Oracle 中完成以上是关于如何使用 ANSI SQL 创建临时表?的主要内容,如果未能解决你的问题,请参考以下文章