たとえば、かっこを追加する必要があるという理由だけで、call
call my_proc()
少しテストを設定した場合:
SQL>
SQL> create or replace procedure test is
2 begin
3 dbms_output.put_line('hi');
4 end;
5 /
Procedure created.
そして、これをいくつかの異なる方法で実行します
SQL> exec test
hi
PL/SQL procedure successfully completed.
SQL> call test;
call test
*
ERROR at line 1:
ORA-06576: not a valid function or procedure name
SQL> call test();
hi
Call completed.
なぜ使用する必要があるのcall
ですか?exec
そうではexecute
ありませんbegin ... end
か?
アップデートに基づくと、問題はブール値であり、call
サポートされていないようです。さらに別の小さな手順を作成する
SQL> create or replace procedure test (Pbool boolean ) is
2 begin
3 if Pbool then
4 dbms_output.put_line('true');
5 else
6 dbms_output.put_line('false');
7 end if;
8 end;
9 /
Procedure created.
SQL> show error
No errors.
そしてそれを実行することはこれを証明します
SQL> call test(true);
call test(true)
*
ERROR at line 1:
ORA-06576: not a valid function or procedure name
exec
使用できない理由の背後にある理由がよくわかりませんexecute
が、これらが両方とも立ち入り禁止であると仮定して、従来の匿名のPL/SQLブロックを使用しないのはなぜですか。
SQL> begin
2 test(true);
3 end;
4 /
true
PL/SQL procedure successfully completed.