oracle-sqldeveloper - 如何编辑 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中的一些设置来实现。
解决方案
程序在 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;
/
推荐阅读
- haskell - 在上下文之外结合可能、IO 和函数会导致错误
- c# - 备用行颜色 GroupedListview
- javascript - jsGantt改进的箭头突出显示
- java - 在java中只返回奇数(int)的方法
- webview - Flutter:如何在 Web 视图中启用手势?
- makefile - 如何通过qmake生成makefile并在没有Qt环境的情况下使用它
- varnish - Varnish 3:接受 JSON 返回 HTML
- typo3 - 在德国搜索好的 Typo3 培训课程
- apache-spark - Spark 创建的分区比 WholeTextFiles 上的 minPartitions 参数少
- node.js - NodeJS SyntaxError:位置 16 处的 JSON 中的意外字符串