如何为SQL-Developer编辑导出模板

时间:2018-08-17 13:47:45

标签: oracle-sqldeveloper

当我从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中的某些设置来实现。

1 个答案:

答案 0 :(得分:2)

该程序在12c之前是不可编辑的,因此有点麻烦,但是您可以告诉SQL Devleoper导出与11g兼容的代码。在导出对话框中,将COMPATIBLE更改为11.2

enter image description here

然后,已导出文件中的代码将省略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;
/