在 sqlplus 中转储函数或过程的主体
Posted
技术标签:
【中文标题】在 sqlplus 中转储函数或过程的主体【英文标题】:Dump the body of a function or procedure in sqlplus 【发布时间】:2009-12-11 21:50:05 【问题描述】:使用sqlplus连接oracle数据库时,如何导出函数或过程的主体?
【问题讨论】:
【参考方案1】:select
text
from
user_source
where
type = 'PROCEDURE'
and
name='YOURPROCEDURENAME'
order by
line;
【讨论】:
同样 type='FUNCTION' 和 name='YOURFUNCTIONNAME'。 我们设置了几种不同的模式。我需要做一些特别的事情来处理这些吗? 您可以登录到特定架构,user_source 将只包含该架构的源。或者您可以作为 DBA 登录,并且 dba_source 表也将有一个所有者列,您可以将其包含在 where 子句中以指定您感兴趣的架构。 实际上,您想要“选择文本”。 LINE 列有行号。【参考方案2】:用途:
SELECT us.name,
us.type,
us.text
FROM USER_SOURCE us
WHERE us.type IN ('PROCEDURE', 'FUNCTION')
ORDER BY name, line
【讨论】:
【参考方案3】:另一种解决方案是使用 dbms_metadata api
set line 200
set long 10000
select dbms_metadata.ddl('PACKAGE','Package Name') from dual;
您可以将其用于所有元数据,包括表、索引和约束。
【讨论】:
赞成,因为我认为其他机制也需要那些“设置线/设置长”。 @monojohnny,set long
不需要其他机制。仍然 +1,因为 dbms_metadata 是要走的路,恕我直言。以上是关于在 sqlplus 中转储函数或过程的主体的主要内容,如果未能解决你的问题,请参考以下文章