DDL ステートメントを使用する DBMS_JOB (セキュリティ上の理由から DBMS_SCHEDULER は使用できません) を使用してジョブをスケジュールしようとしています。
DECLARE
job_num NUMBER;
BEGIN
DBMS_JOB.SUBMIT(job => job_num,
what => 'BEGIN EXECUTE IMMEDIATE ''CREATE TABLE temp1 (ID NUMBER)''; END;'
);
DBMS_OUTPUT.PUT_LINE('JobID'||job_num);
DBMS_JOB.RUN(job_num);
END;
/
エラーメッセージが表示されて実行に失敗します:
ORA-12011: 1 つのジョブの実行に失敗しました ORA-06512: "SYS.DBMS_IJOB"、548 行目 ORA-06512: "SYS.DBMS_JOB"、278 行目 ORA-06512: 8 行目
無名ブロック内からDBMS_JOB.RUN()ステートメントを削除すると、少なくともジョブを作成 (および保存) できます。 ジョブを確認すると、 BEGIN EXECUTE IMMEDIATE 'CREATE TABLE temp1 (id NUMBER) ';を実行するコードとしてこれが保存されてい ます。終わり;
スタンドアロンで実行すると、明らかに実行されます。DBMS_JOB.RUN() を呼び出して全体を実行しようとしたときにのみ失敗します。
DDL ステートメントを DBMS_JOB のパラメーターとして使用することに制限はありますか? これに関するドキュメントにはポインタが見つかりません。