我正在开发一个管理面板,我们可以根据微服务平台中的服务确定可以在 Oracle 12c 模式中调用哪个stored procedures
和views
。
服务必须知道过程需要哪些参数以及视图可用的列,以便调用它们。
我是管理面板,程序或视图的创建者可以通过输入这些信息来注册,例如对象的名称,每个参数的名称,长度和数据类型。
但是如果用户只输入对象的名称然后 SQL SELECT将在表中检索过程的参数属性,那么它会更加优雅,并且与视图相同#39 ; s列的属性,因此面板会自动注册这些配置。
有人可以发布关于如何实现这一目标的查询吗?我是Oracle的新手,我不知道如何查询对象元数据。
答案 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;