首页 > 解决方案 > 如何编辑 SQL-Developer 的导出模板

问题描述

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

标签: oracle-sqldeveloper

解决方案


程序在 12c 之前是不可编辑的,所以这有点小技巧,但你可以告诉 SQL Devleoper 导出与 11g 兼容的代码;在导出对话框中更改COMPATIBLE11.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;
/

推荐阅读