如何使用 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 创建临时表?的主要内容,如果未能解决你的问题,请参考以下文章

如何查看sql server中代码创建的临时表?

如何使用 ANSI sql 外连接表 [重复]

SQL如何把查询出来的多个表创建成一个临时表

sql如何创建临时表

SQL如何把查询出来的多个表创建成一个临时表

SQL 使用临时表创建视图