Oracle SQL CREATE TABLE#X语法含义

时间:2019-07-16 21:15:57

标签: sql oracle

我正在研究Oracle DB 12c测试,但是我对不断涌现的东西有些迷失。

我了解

CREATE #MYTABLE (x number); 

创建一个本地临时表,但是我不确定它如何应用于以下语法:

CREATE MYTABLE#OTHER (x number);

有人可以解释吗?我无法在搜索引擎中找到任何答案。

1 个答案:

答案 0 :(得分:4)

您当前的代码看起来更像SQL Server。 SQL Server使用井号/井号#表示一个临时表。例如:

CREATE TABLE #temp (id int)

Oracle不使用井号。例如:

--Global temp:
CREATE GLOBAL TEMPORARY TABLE temp(id number)
ON COMMIT DELETE ROWS;
--or ON COMMIT PRESERVE ROWS;

临时表在SQL Server中也有所不同,因为它们仅存在于创建它们的上下文中(即脚本执行),然后自动将它们删除。在Oracle中,它们像普通表一样持久存在。绝对值得阅读和了解有关使用哪种DBMS的临时表的利弊。

无论如何,在Oracle中运行此命令将抛出无效字符错误,因为表不能以#开头:

CREATE TABLE #MYTABLE (x number);

运行此命令将起作用,但它不是临时表。这将是一个名为MYTABLE#OTHER的表:

CREATE TABLE MYTABLE#OTHER (x number);