假设我有几个模式A、B、C、D(实际上它们像10+(。我正在尝试在所有模式中搜索特定的数据类型,并使用系统表all_OBJECTS。我希望我能回避的是执行相同的查询:
SELECT * FROM ALL_OBJECTS WHERE OBJECT_NAME LIKE '%something%';
手动浏览所有模式。
有没有一种简单的方法可以同时为所有模式执行上面的脚本?提前感谢!
试试这个:
SELECT PROC.OWNER AS SCHEMA_NAME,
PROC.OBJECT_NAME AS PROCEDURE_NAME,
ARGS.ARGUMENT_NAME,
ARGS.IN_OUT,
ARGS.DATA_TYPE,
ARGS.DATA_LENGTH,
ARGS.DATA_PRECISION,
ARGS.DATA_SCALE,
ARGS.DEFAULTED,
ARGS.DEFAULT_VALUE
FROM SYS.ALL_PROCEDURES PROC
LEFT JOIN SYS.ALL_ARGUMENTS ARGS ON PROC.OBJECT_ID = ARGS.OBJECT_ID
WHERE PROC.OBJECT_TYPE = 'PROCEDURE'
AND PROC.OBJECT_NAME LIKE '%something%'
ORDER BY SCHEMA_NAME, PROCEDURE_NAME, ARGS.POSITION;
这将为您提供所有模式中的所有过程,并按参数列表和类型列出它们。