2016-08-22 6 views
-2

私は現在使用しています:同じ手順をOracleで同時に実行しますか?

BEGIN 
PACKAGE1.PROCEDURE1('PARAM_1','PARAM_A','PARAM_B'); 
END; 

私は、同じ手順を実行する必要があり、複数回(オラクル)が、この時間は、例えば、最初のパラメータだけを変更:

PACKAGE1.PROCEDURE1('PARAM_2','PARAM_A','PARAM_B'); 
PACKAGE1.PROCEDURE1('PARAM_3','PARAM_A','PARAM_B'); 

どのようにすることができますこれを達成する?前もって感謝します。

+2

匿名ブロックに3回コールしますか?または、最初のパラメータ値がデータベースのどこかから来ている場合は、プロシージャを呼び出すループを作成します。 –

+0

簡単な例を挙げてください。 – James

+0

そのうちのどのアプローチですか?例では要件を理解する必要がありますが、まだありません。最初のパラメータの値はデータベースのどこかから来ているので、それらをループすることができますか?あなたのタイトルは「同時に」と言っています - あなたは本当にこれらを並行して動かそうとしていますか?どのようなスレッドでも監視できるように構築されていますか?それとも、データベースに1回のリクエストを行い、このプロシージャを何度も連続して実行したいということですか? –

答えて

0

匿名のplsqlブロックでは、繰り返し回数でループを記述するには、プロシージャを呼び出すパラメータの数に依存します。パラメタを設定するループ・プット・ロジックの最上部で、それを使ってプロシージャをコールします。しかし、プログラム実行中にコンソールまたはユーザーからデータを読み取るオプションがplsqlにないことに注意してください。 は//私はあなたが私はあなたが文字列で

execute_immidiate

コマンドを使用しようとすることができ、それはPLSQLで行うことができているかわからない、ループ内の各時間を他の変数を渡すことについて尋ねることができると思いますパラメータ名としてconnetenateします。

0

パッケージ手順はIN OUTパラメータでなければなりません。最初のパラメータはINであると仮定しますので、マスタは値をこの値に指定する必要があります。

手順は、外部ソースまたは他の通過メカニズムからの着信の外部ストリームが予想どおりに機能するようになっています。

これらの手順をこのパッケージ手順に合わせるだけで、この手順に必要な時間だけこの手順を呼び出すことができます。

0

同じ手順を同時に実行する場合は、ジョブとして送信することもできます。

BEGIN 

begin 
    dbms_scheduler.create_job 
    ( 
     job_name  => 'One_Time_Job_1', 
     job_type  => 'PLSQL_BLOCK', 
     job_action => 'begin PACKAGE1.PROCEDURE1('PARAM_2','PARAM_A','PARAM_B'); end;', 
     start_date => sysdate, 
     enabled  => TRUE, 
     auto_drop  => TRUE, 
     comments  => 'one-time job'); 
    end; 


begin 
    dbms_scheduler.create_job 
    ( 
     job_name  => 'One_Time_Job_2', 
     job_type  => 'PLSQL_BLOCK', 
     job_action => 'begin PACKAGE1.PROCEDURE1('PARAM_3','PARAM_A','PARAM_B'); end;', 
     start_date => sysdate, 
     enabled  => TRUE, 
     auto_drop  => TRUE, 
     comments  => 'one-time job'); 
    end; 

END; 

詳細については、DBMS_SCHEDULERを参照してください。

0

固定数の並列プロシージャを使用した進行中のプロダクションプロセスの場合は、スケジューラチェーンの使用を検討します。

これは同時にすべての手順を実行し、あなたのような余分な機能、与える:1またはそれらのすべてが

  • 制御を完了したとき

    1. 他のプロシージャを実行する機能をその上プロシージャは、プロシージャの成功または失敗に応じて、後で実行されます。
  • 関連する問題