0

Oracle 10gを使用しており、次のスクリプトを使用してジョブを作成しています

CREATE OR REPLACE PROCEDURE archtemp AS
BEGIN
    UPDATE ARCH_TEMP SET ARCH_DATE = SYSDATE; 
    COMMIT;
END archtemp;

VAR jobno NUMBER;
BEGIN
   DBMS_JOB.SUBMIT(:jobno, 'archtemp;', SYSDATE, 'sysdate + 1/1440');
   COMMIT;
END;

ジョブが自動的に実行されることはありません(手動で実行されますが)。alert_sid.log

ORA-12012: error on auto execute of job 26
ORA-01422: exact fetch returns more than requested number of rows
ORA-06512: at line 8

ORA-01422エラーを自分のコードにリンクできません。ここでは何もしていませんfetch

4

5 に答える 5

1

これがSQL*Plusのスクリプトであると仮定すると、2つ/欠落しているため、何も実行されません。

CREATE OR REPLACE PROCEDURE archtemp AS
BEGIN
    UPDATE ARCH_TEMP SET ARCH_DATE = SYSDATE; 
    COMMIT;
END archtemp;
/

VAR jobno NUMBER;
BEGIN
   DBMS_JOB.SUBMIT(:jobno, 'archtemp;', SYSDATE, 'sysdate + 1/1440');
   COMMIT;
END;
/

私はそれがあなたの仕事ではなく、失敗している別の仕事だと思います。

于 2010-09-08T09:03:47.720 に答える
0

WHAT パラメータとして明示的な PL/SQL ブロックを入れてみてください。

dbms_job.submit(v_jobno, 'begin archtemp; end;', sysdate, 'sysdate+1/1440');

これが私のテストケースです。これはうまくいくようです:

create table arch_temp (
    arch_date date
    );

-- create row to test update
insert into arch_temp (arch_date) values (null);

create or replace procedure archtemp as
begin
    update arch_temp set arch_date = sysdate;
    commit;
end archtemp;
/

-- test everything works in isoloation

begin 
    archtemp; 
end;
/

select * from arch_temp;
-- arch_date = 10:49:34

select * from user_jobs;
-- no rows returned

declare
    v_jobno number;
begin
    dbms_job.submit(v_jobno, 'begin archtemp; end;', sysdate, 'sysdate+1/1440');
    commit;
    dbms_output.put_line('v_jobno: ' || to_char(v_jobno));
end;
/

-- dbms_output...
-- v_jobno: 50520

select * from user_jobs;

-- JOB 50520 returned
-- LAST_DATE = 10:51:11

select * from arch_temp;

-- ARCH_DATE = 10:51:11
于 2010-09-09T09:57:01.497 に答える
0

ここではデータのフェッチは行いませんが、テーブルに対する何らかのON UPDATEトリガーが発生する可能性があると思います。ARCH_TEMPチェックしてください。

于 2010-09-08T09:03:29.897 に答える
0

SERVERERROR トリガー (ここで説明) を使用して、失敗しているステートメントをキャッチしようとします。ただし、最初に、アラート ログを確認できます。再帰 SQL がエラーになっている場合は、データ ディクショナリに問題がある可能性があります。

于 2010-09-09T01:02:22.080 に答える
0

Nick Pierpointによる解決策も試しましたが、うまくいきませんでした。Oracle 9iを搭載した別のマシンで同じことを試してみたところ、失敗したため、LUCKに何か問題があるようです!!!

返信ありがとうございます。

よろしく

于 2010-09-14T13:15:23.710 に答える