我在这个旧数据库中有一些用户创建的存储过程和函数。如何列出一个特定模式的所有过程和函数,例如,SCHEMA1。
答案 0 :(得分:2)
架构和用户在Oracle中有点同义。
如果要列出特定模式中的所有过程和函数,请查询:
例如,
SELECT * FROM user_objects WHERE object_type IN('FUNCTION', 'PROCEDURE');
或者,
SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE IN ('FUNCTION','PROCEDURE') AND OWNER = 'your_schema_name';
确保以大写形式传递所需的值。
<强>更新强>
来自此处的文档http://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_2025.htm,
ALL_PROCEDURES
ALL_PROCEDURES列出了所有功能和程序,以及 相关属性。例如,ALL_PROCEDURES指示是否 或者不是功能是流水线,并行启用或聚合 功能。如果函数是流水线或聚合函数,则 还确定了相关的实施类型(如果有的话)。
因此,您还可以根据文档使用 user_procedures 视图。
注意
请注意关于*_procedures
的一些事项。您需要注意该过程是独立的还是包含在包中。我在Unable to find procedure in DBA_PROCEDURES view
答案 1 :(得分:2)
如果您想查找所有程序的清单,那么 -
SELECT * FROM ALL_PROCEDURES WHERE OWNER = 'SCHEMA1';
这当然假设您有权查看SCHEMA1的过程/功能/包。
如果您拥有DBA权限,那么您也可以 -
SELECT * from DBA_PROCEDURES WHERE OWNER = 'SCHEMA1';
如果你想要程序中的代码,那么查找ALL_SOURCE或DBA_SOURCE。
答案 2 :(得分:0)
接收此信息的最佳方式:
SYSDBA
dba_source
SQL:
select distinct NAME from dba_source
where TYPE in ('FUNCTION','PROCEDURE')
and OWNER = 'SCHEMA_NAME';