达梦8查看是否建立定时作业调度

一、创建十进制数转换为二进制函数

CREATE OR REPLACE FUNCTION NUMBER_TO_BIT (V_NUM  NUMBER,v_type varchar(50))
RETURN VARCHAR IS
    V_ZHOU VARCHAR(7); --注意返回列长度
    V_YUE  VARCHAR(31);--注意返回列长度
    V_N1   NUMBER;
    V_N2   NUMBER;
BEGIN
    --返回二进制长度
        if v_type =='周' then
                V_N1 := V_NUM;
                LOOP
                        V_N2   := MOD(V_N1, 2);
                        V_N1   := ABS(TRUNC(V_N1 / 2));
                        V_zhou := TO_CHAR(V_N2) || V_ZHOU;
                        EXIT
                WHEN V_N1 = 0;
                END LOOP;
                SELECT lpad(V_ZHOU, 7, 0) INTO V_ZHOU FROM dual;
                return V_ZHOU;
        ELSIF V_TYPE  =='月' then
                V_N1 := V_NUM;
                LOOP
                        V_N2  := MOD(V_N1, 2);
                        V_N1  := ABS(TRUNC(V_N1 / 2));
                        V_YUE := TO_CHAR(V_N2) || V_YUE;
                        EXIT
                WHEN V_N1 = 0;
                END LOOP;
                SELECT lpad(V_YUE, 31, 0) INTO V_YUE FROM dual;
                return V_YUE;
        END IF ;
end;

二、查询已建立的作业调度

SELECT  A.ID "作业iD",A.NAME "作业名称",
        case A.ENABLE WHEN 0 THEN '不启用' when 1 THEN '启用' end "作业是否用",
        B.name "步骤名称",
        case B.TYPE
        when 0 then '执行一段SQL语句或者是语句块'
        when 1 then '执行基于V1.0版本的备份还原(没有WITHOUT LOG和PARALLEL选项)'
        when 2 then '重组数据库'
        when 3 then '更新数据库的统计信息'
        when 4 then '执行DTS(数据迁移)'
        when 5 then '执行基于V1.0版本的备份还原(有WITHOUT LOG和PARALLEL选项)'
        when 6 then '执行基于V2.0版本的备份还原'
        end "步骤的类型",
        B.COMMAND "运行时执行语句",
    case C.ENABLE
        WHEN 0 THEN '不启用'
        when 1 THEN '启用'
        end "调度是否用",
        case C.TYPE
        when 0 then '只执行一次块'
        when 1 then '按天的频率来执行'
        when 2 then '按周的频率来执行'
        when 3 then '在一个月的某一天执行'
        when 4 then '在一个月的第一周第几天执行'
        when 5 then '在一个月的第二周的第几天执行'
        when 6 then '在一个月的第三周的第几天执行'
        when 7 then '在一个月的第四周的第几天执行'
        when 8 then '表示在一个月的最后一周的第几天执行'
    end "调度类型",c.name "调度名称",
    case C.TYPE
        when 0 then C.FREQ_INTERVAL
        when 1 then '每隔' ||C.FREQ_INTERVAL ||'天执行'
        when 2 then '每隔' ||C.FREQ_INTERVAL ||'个星期执行'
        when 3 then '每隔' ||C.FREQ_INTERVAL ||'个月中的某一天执行'
        else '每隔' ||C.FREQ_INTERVAL'个月的某一周执行' end "执行频率"    ,
    case C.TYPE
        when 0 then '值无效,系统不会做检查'
        when 1 then '值无效,系统不会做检查'
        when 2 then
                NUMBER_TO_BIT(C.FREQ_SUB_INTERVAL, '周')
        when 3 then C.FREQ_SUB_INTERVAL
        end "更精细的执行频率", c.FREQ_MINUTE_INTERVAL "间隔分钟"
FROM SYSJOB.SYSJOBS A,SYSJOB.SYSJOBSTEPS B,SYSJOB.SYSJOBSCHEDULES C
WHERE A.ID =B.JOBID AND A.ID =C.JOBID ;

注意:DM 数据库系统内部用七位二进制来表示选中的日子。从最低位开始算起,依次表示周日、周一...周五、周六。选中周几,就将该位置 1,否则 0。例如,选中周二和周六,7 位二进制就是 1000100,转化成十进制就是 68,所以 FREQ_SUB_INTERVAL 就取值 68。

select * from SYSJOB.SYSJOBS A;--作业信息表
select * from SYSJOB.SYSJOBSTEPS B;--作业步骤信息表
select * from SYSJOB.SYSJOBSCHEDULES C;--作业调度信息表

 

 

 

更多资讯请上达梦技术社区了解: https://eco.dameng.com

posted @ 2021-08-09 14:55  xiaowu222  阅读(477)  评论(0编辑  收藏  举报