2016-08-17 4 views
1

これは簡単な質問です。PL/SQL - ステートメントはプロシージャが完了してから一度だけ実行されますか?

BEGIN 
    a_random_procedure ('input','output'); 

    ... DML statements ... 
END; 

質問:私はこのようなブロックを持っていると言うDML statementsa_random_procedureが完了した後にのみ実行しますか?それで、a_random_procedureの後に何かが完了した後に実行されますか?

ADD-ON:a_random_procedureが別の手順を実行しているときはどうなりますか?

+3

はい。ステートメントの実行は順次です。 –

+0

こんにちは、私は投稿を編集し、さらにいくつかの情報が含まれています。 – user3224907

答えて

3

はい、 "DMLステートメント"は、 "a_random_procedure"が完了した後にのみ実行されます。
その中に別の手順がある場合、最初の手順はその手順も完了するまで待機します。
次のコード行は、他のプロシージャまたは関数を呼び出すときに、前に呼び出されたプロシージャまたはファンクションが終了するまで待機します。

2

PL/SQLはプロシージャ型のlaunguageのようなものです。あなたの質問はyesです。プロシージャが他のprocs /関数を呼び出しても、プロシージャの終了後にdmlが実行されます。あなたのプロシージャがクラッシュしたときに、ケースを処理することができます。その後、プロシージャ内の例外が処理されてからdmlが実行されると、theraは2つのオプションになります。例外が処理されない場合、レベルアップ(この場合は匿名ブロックへの入力)が行われ、それもクラッシュ(停止)され、DMLは実行されません。

+0

正確に言えば、PL/SQLが手続き型コーディングをサポートしているという事実はこの問題には関係しません。 https://en.wikipedia.org/wiki/Procedural_programming –

関連する問題