如何从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_参数,则为前缀