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

How to get parameters properties from a stored procedure in Oracle?

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

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

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

但是如果用户只键入对象的名称然后 a SQL SELECT 将在 table,与视图列的属性相同,因此面板会自动注册这些配置。

任何人都可以 post 查询如何实现此目的吗? 我是 Oracle 的新手,我不知道如何查询对象元数据。

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

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

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

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

这可用于视图(我使用 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;