如何从Oracle中的存储过程获取参数属性?

时间:2017-03-30 12:20:41

标签: oracle stored-procedures views oracle12c

我正在开发一个管理面板,我们可以根据微服务平台中的服务确定可以在 Oracle 12c 模式中调用哪个stored proceduresviews

服务必须知道过程需要哪些参数以及视图可用的列,以便调用它们。

我是管理面板,程序或视图的创建者可以通过输入这些信息来注册,例如对象的名称,每个参数的名称,长度和数据类型。

但是如果用户只输入对象的名称然后 SQL SELECT将在表中检索过程的参数属性,那么它会更加优雅,并且与视图相同#39 ; s列的属性,因此面板会自动注册这些配置。

有人可以发布关于如何实现这一目标的查询吗?我是Oracle的新手,我不知道如何查询对象元数据。

2 个答案:

答案 0 :(得分:7)

我相信你正在寻找这样的东西。

SELECT *
  FROM SYS.DBA_PROCEDURES
  WHERE OBJECT_TYPE = 'PROCEDURE' 
  AND   OBJECT_NAME = 'xxxx' 

一旦你有了这个,就可以从这样的东西中获取参数。

SELECT *
  FROM SYS.ALL_ARGUMENTS  
  where object_name  = 'procedure_name';

答案 1 :(得分:0)

这可用于视图(我使用了USER _...元数据视图,但您可以根据用户授权使用DBA _...):

SELECT A.TABLE_NAME, A.COLUMN_NAME, A.DATA_TYPE
  FROM USER_TAB_COLUMNS A
  INNER JOIN USER_VIEWS B ON A.TABLE_NAME = B.VIEW_NAME
/* WHERE A.TABLE_NAME = 'xxxx' */
 ORDER BY TABLE_NAME, COLUMN_ID;