如何检索包内的方法类型



如何在包中获取方法的类型(无论是函数还是过程(?

CREATE OR REPLACE PACKAGE SAMPLE_PACKAGE IS
PROCEDURE procedure1;
PROCEDURE procedure2;
FUNCTION function1(
  key_           IN VARCHAR2) RETURN BOOLEAN;
END SAMPLE_PACKAGE;

我的包将是这样的,它将具有多个功能和过程。

我尝试了诸如如何区分 Oracle 元数据中的过程和函数?之类的示例,使用 user_arguments 和user_procedures表,但对于大型数据集来说,这似乎很昂贵。

SELECT up.object_name, up.procedure_name, up.overload,
CASE WHEN ua.object_id IS NULL THEN 'PROCEDURE' ELSE 'FUNCTION' END AS method_type
FROM user_procedures up LEFT JOIN user_arguments ua ON ( ua.object_id = up.object_id
         AND ua.subprogram_id = up.subprogram_id AND ua.position = 0 )
WHERE up.object_name = 'MY_OBJECT';
select object_name, object_type, name, type
from user_identifiers
where  object_type like 'PACKAGE%'
and usage in ('DECLARATION', 'DEFINITION')
and type in ('FUNCTION', 'PROCEDURE');

此简单查询返回所有用户定义的包。随意过滤掉您需要的内容。

最新更新