変更する必要があるのはDECLARE
だけです (匿名ブロックの開始を示します)CREATE PROCEDURE
、置換変数を介して現在設定している変数を仮引数として使用します。代わりに:
DECLARE
veno emp.empno%type:=&veno;
vsal emp.sal%type;
vexp number;
BEGIN
...
END;
/
作る:
CREATE OR REPLACE PROCEDURE my_proc (veno IN emp.empno%type)
AS
vsal emp.sal%type;
vexp number;
BEGIN
...
END;
/
その後、匿名ブロックから、またはSQL*PlusまたはSQLDeveloperでexecute
を使用して呼び出すことができます。 速記:
set serveroutput on
execute my_proc(&veno);
この例ではまだ置換変数を使用しているため、使用する値に昇格しますが、数値を直接渡すこともできます。
プロシージャの作成の詳細
および
コードをかなり単純化して、繰り返しと再クエリを減らすことができます。ケース式と戻り句を検索します。しかし、それは直接関係ありません。