如何列出Oracle数据库所有函数并按修改日期排序?遇ORA-00942错误
获取Oracle数据库所有函数及修改日期的查询方案
错误原因
你使用DBA_OBJECTS报错,是因为当前用户没有查询该系统视图的权限——DBA_OBJECTS需要SELECT_CATALOG_ROLE角色或显式授权才能访问。
可用查询语句
1. 普通用户推荐:ALL_OBJECTS
该视图展示当前用户有权限访问的所有函数(含其他用户创建的):
SELECT owner, object_name, last_ddl_time FROM all_objects WHERE object_type = 'FUNCTION' ORDER BY owner, last_ddl_time DESC;
字段说明:
owner:函数所属用户object_name:函数名称last_ddl_time:函数最后修改/编译/创建的时间
2. 仅查当前用户函数:USER_OBJECTS
无需额外权限,仅返回当前用户创建的函数:
SELECT object_name, last_ddl_time FROM user_objects WHERE object_type = 'FUNCTION' ORDER BY last_ddl_time DESC;
3. 如需访问DBA_OBJECTS(需管理员操作)
若必须查看数据库中所有用户的函数,联系管理员给你授权:
-- 管理员执行以下任一授权语句 GRANT SELECT ON dba_objects TO your_username; -- 或授予角色 GRANT select_catalog_role TO your_username;
授权后可执行精简版的初始查询(避免返回冗余字段):
SELECT owner, object_name, last_ddl_time FROM dba_objects WHERE object_type = 'FUNCTION' ORDER BY owner, last_ddl_time DESC;
内容的提问来源于stack exchange,提问作者ilthignore
相关产品推荐
相关产品推荐

