如何查询Oracle中DBMS_SCHEDULER创建程序的参数属性?
Oracle DBMS_SCHEDULER 程序参数查询方法
你通过DBMS_SCHEDULER.CREATE_PROGRAM创建的调度程序参数,不会存储在ALL_ARGUMENTS视图中,该视图仅记录独立存储的PL/SQL对象(存储过程、自定义函数、包方法等)的参数定义,调度程序的参数是Scheduler组件单独维护的元数据,需要查询专属系统视图。
对应查询视图
根据权限范围不同,可从三个层级的视图查询参数信息:
USER_SCHEDULER_PROGRAM_ARGS:查询当前登录用户名下所有调度程序的参数ALL_SCHEDULER_PROGRAM_ARGS:查询当前用户持有访问权限的所有调度程序的参数DBA_SCHEDULER_PROGRAM_ARGS:查询数据库实例内全量调度程序的参数,需要DBA权限才可访问
查询示例
替换WHERE条件中的程序名为你实际创建的程序名(注意Oracle元数据默认存储为大写)即可查询对应参数:
SELECT program_name, argument_name, -- 自定义参数名 argument_position, -- 参数位置序号,从1开始计数 argument_type, -- 参数数据类型 default_value, -- 参数配置的默认值 required, -- 标记是否为必填参数 enabled -- 参数是否启用 FROM ALL_SCHEDULER_PROGRAM_ARGS WHERE program_name = 'XXX';
补充说明
- 调度程序本身的基础属性(创建时填写的
program_type、program_action、comments、启用状态等),可从*_SCHEDULER_PROGRAMS视图查询。 - 如果程序类型为
STORED_PROCEDURE,即使你没有手动调用DBMS_SCHEDULER.DEFINE_PROGRAM_ARGUMENT显式定义参数,只要number_of_arguments设置值大于0,参数视图也会自动同步对应位置的参数记录;如果是PLSQL_BLOCK、EXECUTABLE类型的程序,只有手动添加的参数才会出现在视图中。
内容的提问来源于stack exchange,提问作者Mohamedmehdi Ellouze
相关产品推荐
相关产品推荐

