質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

解決済

スケジュールジョブのジョブ名を変数化したい

raccoondog
raccoondog

総合スコア75

Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

1回答

0評価

0クリップ

1140閲覧

投稿2018/11/30 06:33

編集2018/12/04 05:06

OracleDBのトリガーで、スケジュールジョブを作成しているのですが
初回インサート処理は成功するも
2回目のインサート処理では

ORA-27478 ジョブが実行中です。

とエラーで終了します。

スケジュールジョブを作成する時に、一意のジョブ名ではなく変数をつけてユニークなジョブ名にしたいです。

create or replace trigger embulk_tr after insert on INPUT_TEST for each row DECLARE pragma autonomous_transaction; begin dbms_output.put_line('-------------------------'); dbms_output.put_line('OracleDB to BigQuery Bulk Insert Start'); IF INSERTING THEN DBMS_SCHEDULER.CREATE_JOB ( JOB_NAME => 'Embulk_Test', JOB_TYPE => 'EXECUTABLE', JOB_ACTION => 'C:\Users\xxxxxx\Desktop\embulk\cmd.exe /c C:\Users\xxxxxx\Desktop\embulk\oracle_to_bigquery.bat', start_date => TO_DATE('2018/11/13 00:00:00','yyyy/mm/dd hh24:mi:ss'), end_date => TO_DATE('2999/12/31 00:00:00','yyyy/mm/dd hh24:mi:ss'), auto_drop => TRUE, enabled => TRUE ); END IF; dbms_output.put_line('OracleDB to BigQuery Bulk Insert End'); dbms_output.put_line('-------------------------'); end; /

更新箇所

SQL> create sequence Embulk_Test; 順序が作成されました。 SQL> select Embulk_Test.nextval from dual; NEXTVAL ---------- 1 SQL> select Embulk_Test.nextval from dual; NEXTVAL ---------- 2 <<pl/sql>> create or replace trigger embulk_tr after insert on INPUT_TEST for each row DECLARE pragma autonomous_transaction; begin dbms_output.put_line('-------------------------'); dbms_output.put_line('OracleDB to BigQuery Bulk Insert Start'); IF INSERTING THEN DBMS_SCHEDULER.CREATE_JOB ( JOB_NAME => 'Embulk_Test.nextval', JOB_TYPE => 'EXECUTABLE', JOB_ACTION => 'C:\Users\yazaki\Desktop\embulk\cmd.exe /c C:\Users\yazaki\Desktop\embulk\oracle_to_bigquery.bat', start_date => TO_DATE('2018/11/13 00:00:00','yyyy/mm/dd hh24:mi:ss'), end_date => TO_DATE('2999/12/31 00:00:00','yyyy/mm/dd hh24:mi:ss'), auto_drop => TRUE, enabled => TRUE ); END IF; dbms_output.put_line('OracleDB to BigQuery Bulk Insert End'); dbms_output.put_line('-------------------------'); DBMS_SCHEDULER.DROP_JOB('Embulk_Test.nextval', force => true); end; / <<業務処理を実行>> SQL> exec CRE_SAMPLE_DATA; BEGIN CRE_SAMPLE_DATA; END; * 行1でエラーが発生しました。: ORA-23306: スキーマEMBULK_TESTが存在しません。 ORA-06512: "SYS.DBMS_ISCHED", 行175 ORA-06512: "SYS.DBMS_SCHEDULER", 行288 ORA-06512: "SYSTEM.EMBULK_TR", 行9 ORA-04088: トリガー'SYSTEM.EMBULK_TR'の実行中にエラーが発生しました ORA-06512: "SYSTEM.CRE_SAMPLE_DATA", 行23 ORA-06512: 行1

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。