迁移 Oracle 到 PostgreSQL: DUAL 表

五月 20, 2023

DUAL 是数据字典中的一个很小的表,数据库和用户编写的程序可以引用它,以保证一个已知的结果。当一个值必须只能返回一次时,DUAL 表很有用,如当前日期和时间等。所有数据库用户都可以访问 DUAL 表。

Oracle 的 DUAL 表

DUAL 表只有一个称为 DUMMY 的列, 仅包含一个其值为 X 的行。下面的示例查询 DUAL 来执行一个算术操作:

SQL> SELECT ((3*4)+5)/3 FROM DUAL;
((3*4)+5)/3
-----------
5.66666667

另见: Oracle 数据库 SQL 语言参考,有关DUAL表的详细信息。

PostgreSQL 的 DUAL 表

PostgreSQL 没有提供 DUAL 表,我们可以使用 CREATE VIEW 语句创建一个 DUAL 视图。

-- emulation of dual table
CREATE VIEW oracle.dual AS SELECT 'X'::varchar AS dummy;
REVOKE ALL ON oracle.dual FROM PUBLIC;
GRANT SELECT, REFERENCES ON oracle.dual TO PUBLIC;