使用 Toad for Oracle 检索存储过程、视图、函数、触发器

Posted

技术标签:

【中文标题】使用 Toad for Oracle 检索存储过程、视图、函数、触发器【英文标题】:Retrieving Stored procedures, Views, Functions, Triggers using Toad for Oracle 【发布时间】:2010-03-12 09:19:36 【问题描述】:

toad for oracle如何获取存储过程、视图、函数、触发器的脚本?

【问题讨论】:

【参考方案1】:

一般来说,您应该使用dbms_metadata 来检索 DDL 语句。例如。

select dbms_metadata.get_ddl('VIEW', 'V_MYVIEW') from dual;

这当然可以包含在对数据字典的查询中,例如。

select dbms_metadata.get_ddl(object_type, object_name) 
from user_objects
where object_type in ('VIEW', 'PROCEDURE', 'FUNCTION', 'TRIGGER');

【讨论】:

这对我不起作用。我有一个数据库,我想要为存储过程、视图、备份过程触发器编写的脚本。蟾蜍或任何查询中是否有任何东西可以给我这些脚本 +1 ... 我已经看到(过去,不知道 Toad 的当前版本)第三方工具提供的 Oracle 对象逆向工程定义不完整或不正确的问题. @WENzER - 您在使用 dbms_metadata 时遇到了哪些具体问题? 您应该使用 RMAN 进行备份,而不是尝试转储脚本并重新运行它们。从长远来看,这将很多容易,因为有很多潜在的陷阱会使这种方法变得困难。【参考方案2】:

在 Toad 菜单中,选择数据库 -> 模式浏览​​器。使用出现的选项卡在视图、过程、表、触发器、函数之间导航...

【讨论】:

【参考方案3】:

Toad 有几种方法可以做到这一点。您只需双击模式浏览器中的任何代码对象,就会打开一个编辑器,向您显示该对象的创建 DDL。或者只选择模式浏览器左侧的对象,然后选择右侧的脚本选项卡(如果您没有看到脚本选项卡,请检查您的选项)。

但如果您想查看大量对象的 DDL,请在模式浏览器中选择所有对象,或在“对象搜索”窗口中搜索它们。然后右键单击并选择另存为脚本。此外,我认为有一个 Extract DDL 工具可以做基本相同的事情,但我可能正在考虑 SQL Navigator。还有一种方法可以将整个模式导出为创建脚本。但是,其中一些功能可能取决于您的许可级别。

顺便说一句,这不是编程问题。

【讨论】:

【参考方案4】:

如果我们使用 dba_source 表,它将为脚本提供过程函数和触发器 我们必须使用 SELECT TEXT FROM dba_source WHERE TYPE = 'Procedure';

【讨论】:

请务必在此查询中大写 PROCEDURE 以进行 CS 比较。【参考方案5】:

实际上,如果你进入架构浏览器,你可以右键单击任何对象(或多个对象)并将其保存为脚本。

【讨论】:

【参考方案6】:

对不起,我遇到了这个线程,试图解决 PL/SQL 中的问题。这里的信息实际上帮助了我,我认为它可能会帮助其他人。

在 PL SQL developer 中,右键单击视图,在底部有一个选项 DBMS_METADATA。 它有一个弹出按钮,您可以在其中选择 DDL。

在我当前的客户中,我得到一个 ORA-31603。在架构“schemaName”中找不到类型为“VIEW”的对象“objname”

这是一个权限问题,技术上可以解决。您的组织是否愿意让您完成您的工作是您必须与他们一起处理的问题。

http://www.tek-tips.com/viewthread.cfm?qid=1666882#

【讨论】:

【参考方案7】:

在查询中尝试 Ctrl+LeftMouseClick 对象名称(函数表视图,...)

【讨论】:

【参考方案8】:

在 toad 中,尝试 Ctrl+鼠标左键单击 查询中的对象名称(函数表视图...)。

【讨论】:

【参考方案9】:

选择所有存储过程 单击鼠标右键 选择发送至 Next 选择编辑器来编写脚本 使用 .sql 扩展保存文件 完成

【讨论】:

【参考方案10】:

您可以查询ALL_SOURCE 视图以获取您需要的数据。例如:

select owner, name, type, line, text from all_source
 where name like upper('%database_name%')
 order by owner, name, type, line;

type 列可能有以下之一:FUNCTIONJAVA SOURCEPACKAGEPACKAGE BODYPROCEDURETRIGGERTYPETYPE BODY

如果您只想要架构中的那些,您可以使用USER_SOURCE(那里没有owner 列)。例如:

SELECT * FROM user_source WHERE line = 1;

【讨论】:

以上是关于使用 Toad for Oracle 检索存储过程、视图、函数、触发器的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Oracle toad 中编辑和保存存储过程?

Oracle / Toad 中的 For 循环

测试 Oracle 存储过程的最简单方法

toad for oracle - 在调试/执行期间执行查询

如何在 Toad 中调试存储过程?

用于 Oracle 查询开发的 SQL 工具和 Toad IDE 的替代方案