1

我想生成创建脚本来创建所有非常多的数据库视图。我知道如何在 Oracle SQL Developer 中使用菜单:工具 > 数据库导出。但是,我在执行导出创建视图脚本时遇到问题。以下是问题。

问题 #1 视图的创建顺序不正确。在下面的示例中,首先在脚本中创建 MY_VIEW_B,然后再创建它的依赖项 MY_VIEW_A。如何生成具有正确依赖顺序的脚本?

CREATE OR REPLACE MY_VIEW_B ("COLUMN1", "COLUMN2") AS
SELECT "COLUMN1", "COLUMN2"
FROM MY_VIEW_A;

CREATE OR REPLACE MY_VIEW_A ("COLUMN1", "COLUMN2") AS
SELECT "COLUMN1", "COLUMN2"
FROM TABLE_A;

问题 #2 分号“;” 被转移到视图代码的最后一行,但问题是它是注释行。所以当我执行脚本时这会出错,因为没有关闭“;” 分号,因为它已移至注释所在的行。如何生成脚本,以便我的视图代码的最后一行是“;” 分号不会自动结转到作为注释的视图代码的倒数第二行?

CREATE OR REPLACE MY_VIEW_C ("COLUMN1", "COLUMN2") AS
SELECT "COLUMN1", "COLUMN2"
FROM TABLE_B
--THIS IS A COMMENT;

CREATE OR REPLACE MY_VIEW_C ("COLUMN1", "COLUMN2") AS
SELECT "COLUMN1", "COLUMN2"
FROM TABLE_C;

谢谢你。

4

1 回答 1

5

正如这里的甲骨文所说:

力量

如果要创建视图,无论视图的基表或引用的对象类型是否存在,或者包含该视图的模式的所有者是否对它们具有特权,请指定 FORCE。在针对视图发出任何 SELECT、INSERT、UPDATE 或 DELETE 语句之前,这些条件必须为真。

如果视图定义包含任何约束,如果基表不存在或引用的对象类型不存在,CREATE VIEW ... FORCE 将失败。如果视图定义命名了一个不存在的约束,CREATE VIEW ... FORCE 也会失败。

还要检查TerminatorPretty Print处理第二个问题;

在此处输入图像描述

经测试Oracle SQL Developer Version 4.1.3.20 Build MAIN-20.78

于 2017-11-17T07:19:37.490 回答