Oracle SQL Developer - 如何以正确的依赖顺序生成脚本

时间:2017-11-17 06:53:34

标签: oracle oracle11g oracle-sqldeveloper oracle-export-dump

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

问题#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;

谢谢。

1 个答案:

答案 0 :(得分:5)

作为Oracle国家here

  

FORCE

     

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

     

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

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

enter image description here

使用Oracle SQL Developer Version 4.1.3.20 Build MAIN-20.78

进行测试