1

我遇到了几篇几乎和我有同样问题的帖子,但我还没有找到适合我情况的答案。

我有一个存储过程,当通过 SQL Developer 手动运行时,该过程运行并成功完成,我看到更新的数据表明提交正在工作。

  • 我有一份计划每天运行的工作,而且确实如此。
  • 我可以手动运行该作业,即在 SQL Developer 中执行它的匿名块。
  • 我可以“右键单击”->“运行作业”

这些方法中的每一个都有效,它们在运行日志中报告“SUCCEEDED”状态。但是,执行时间始终是 00:00:00;并且数据库中没有数据更新。

这是我创建作业时 SQL Developer 创建的匿名块。

DBMS_SCHEDULER.CREATE_JOB (
    job_name => '"OWNER"."GSS"',
    job_type => 'STORED_PROCEDURE',
    job_action => 'OWNER.PKG_GSS.GENERATE_GSS_DATA',
    number_of_arguments => 2,
    start_date => TO_TIMESTAMP_TZ('2018-05-09 11:47:15.000000000 AMERICA/NEW_YORK','YYYY-MM-DD HH24:MI:SS.FF TZR'),
    repeat_interval => 'FREQ=DAILY;BYDAY=MON,TUE,WED,THU,FRI;BYHOUR=6',
    end_date => NULL,
    enabled => TRUE,
    auto_drop => FALSE,
    comments => '');

2个参数也设置好了,我只是没有在这里添加。

任何建议将不胜感激!!!!!

4

1 回答 1

0

我有同样的问题,通过授予程序权限并每天重新创建作业调度程序来解决我的问题。

下面是我写的程序:

create or replace PROCEDURE dist_auto_eod AS
    v_sp_code     VARCHAR2(100);
    v_count_eod   NUMBER;
    v_count_atn   NUMBER;

BEGIN
    FOR data IN (
        SELECT
            sp_code,
            company_code,
            branch_code
        FROM
            dist_login_user
        WHERE
            is_mobile = 'Y'
    ) LOOP
        BEGIN
            SELECT
                COUNT(track_type)
            INTO
                v_count_eod
            FROM
                dist_lm_location_tracking
            WHERE
                    track_type = 'EOD'
                AND
                    TO_DATE(submit_date) = trunc(SYSDATE)
                AND
                    sp_code = data.sp_code;

        END;

        BEGIN
            SELECT
                COUNT(track_type)
            INTO
                v_count_atn
            FROM
                dist_lm_location_tracking
            WHERE
                    track_type = 'ATN'
                AND
                    TO_DATE(submit_date) = trunc(SYSDATE)
                AND
                    sp_code = data.sp_code;

            IF
                v_count_eod = 0 AND v_count_atn = 1
            THEN
                INSERT INTO dist_lm_location_tracking (
                    sp_code,
                    submit_date,
                    latitude,
                    longitude,
                    track_type,
                    company_code,
                    branch_code,
                    remarks
                ) VALUES (
                    data.sp_code,
                    TO_DATE(
                        trunc(SYSDATE) || ' 07:22 PM',
                        'dd-mon-yy hh:mi AM'
                    ),
                    '',
                    '',
                    'EOD',
                    data.company_code,
                    data.branch_code,
                    'Automatic EOD'
                );

            END IF;

        END;

    END LOOP;

    COMMIT;
END;
于 2021-10-18T08:24:53.760 回答