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

如何从Oracle中的存储过程中获取参数属性?,oracle,stored-procedures,views,oracle12c,Oracle,Stored Procedures,Views,Oracle12c,我正在开发一个管理面板,在这里我们可以确定哪些存储过程和视图可以在Oracle 12c模式中从我们的微服务平台中的服务中调用 服务必须知道过程需要哪些参数,视图有哪些列可用,才能调用它们 在管理面板中,程序或视图的创建者可以通过键入这些信息(如对象名称、每个参数的名称、长度和数据类型)来注册它 但是,如果用户只键入对象的名称,然后SQL SELECT将在表中检索过程的参数属性,视图列的属性也是如此,那么将更加优雅,因此面板将自动注册这些配置 有人能就如何实现这一点提出疑问吗?我对Oracle非常

我正在开发一个管理面板,在这里我们可以确定哪些
存储过程
视图
可以在Oracle 12c模式中从我们的微服务平台中的服务中调用

服务必须知道过程需要哪些参数,视图有哪些列可用,才能调用它们

在管理面板中,程序或视图的创建者可以通过键入这些信息(如对象名称、每个参数的名称、长度和数据类型)来注册它

但是,如果用户只键入对象的名称,然后SQL SELECT将在表中检索过程的参数属性,视图列的属性也是如此,那么将更加优雅,因此面板将自动注册这些配置


有人能就如何实现这一点提出疑问吗?我对Oracle非常陌生,不知道如何查询对象元数据。

我相信您正在寻找类似的东西

SELECT *
  FROM SYS.DBA_PROCEDURES
  WHERE OBJECT_TYPE = 'PROCEDURE' 
  AND   OBJECT_NAME = 'xxxx' 
SELECT *
  FROM SYS.ALL_ARGUMENTS  
  where object_name  = 'procedure_name';
一旦你有了它,你可以从这样的东西得到参数

SELECT *
  FROM SYS.DBA_PROCEDURES
  WHERE OBJECT_TYPE = 'PROCEDURE' 
  AND   OBJECT_NAME = 'xxxx' 
SELECT *
  FROM SYS.ALL_ARGUMENTS  
  where object_name  = 'procedure_name';

这可以用于视图(我使用用户\元数据视图,但您可以使用DBA \元数据视图,具体取决于用户授权):


据我所知,
PROCEDURE\u NAME
列仅对作为包的一部分的过程有一个值。对于不属于包(独立)一部分的过程,仅
OBJECT\u NAME
包含名称。因此,可能您可以删除条件
过程\u NAME不为NULL
@etsa,很好,感谢您指出,代码已更新。您不需要系统。如果使用SELECT*FROM USER_参数,则为前缀