如何从 Oracle 中的存储过程中获取参数属性?
How to get parameters properties from a stored procedure in Oracle?
我正在开发一个管理面板,我们可以在其中确定哪些 stored procedures
和 views
可以在 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;
我正在开发一个管理面板,我们可以在其中确定哪些 stored procedures
和 views
可以在 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;