当我从SQL Developer运行导出时,遇到了Flyway问题。这是因为导出包含Flyway无法处理的不必要的关键字。我倾向于忘记这一点,所以我宁愿避免添加此关键字。
当我调用以下代码时:
create procedure do_nothing
as
begin
null;
end;
这正是我打开代码时SQL Developer向我显示的内容。但是,当我单击“导出”时,我得到以下信息:
--------------------------------------------------------
-- DDL for Procedure DO_NOTHING
--------------------------------------------------------
set define off;
CREATE OR REPLACE EDITIONABLE PROCEDURE "POSITION_REPORTING"."DO_NOTHING"
as
begin
null;
end;
/
我想摆脱“ EDITIONABLE”,我希望可以通过SQL-Developer中的某些设置来实现。
答案 0 :(得分:2)
该程序在12c之前是不可编辑的,因此有点麻烦,但是您可以告诉SQL Devleoper导出与11g兼容的代码。在导出对话框中,将COMPATIBLE
更改为11.2
:
然后,已导出文件中的代码将省略EDITIONABLE
,因为它知道该版本无效。
这不是您可以在首选项中设置的内容,这很有意义,因为有效版本列表将取决于您从中导出数据库的版本。无论如何,您可能都不想永久将其设置为较低的版本。
导出工具使用dbms_metadata
包来实际生成代码,因此一种替代方法是编写使用该包的自己的导出过程,并通过该过程指定版本:
select dbms_metadata.get_ddl(
object_type => 'PROCEDURE',
name => 'DO_NOTHING',
version => '11.2')
from dual;
除了注释和set define off
行外,其输出与导出的输出相同:
DBMS_METADATA.GET_DDL(OBJECT_TYPE=>'PROCEDURE',NAME=>'DO_NOTHING',VERSION=>'11.2
--------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE "HR"."DO_NOTHING"
as
begin
null;
end;
/