Vše, co potřebujete změnit, je DECLARE
(označující začátek anonymního bloku) na CREATE PROCEDURE
, s proměnnou, kterou právě nastavujete prostřednictvím substituční proměnné jako formálního argumentu; takže místo:
DECLARE
veno emp.empno%type:=&veno;
vsal emp.sal%type;
vexp number;
BEGIN
...
END;
/
Udělejte to:
CREATE OR REPLACE PROCEDURE my_proc (veno IN emp.empno%type)
AS
vsal emp.sal%type;
vexp number;
BEGIN
...
END;
/
To pak můžete volat z anonymního bloku nebo v SQL*Plus nebo SQL Developer pomocí execute
těsnopis:
set serveroutput on
execute my_proc(&veno);
Tento příklad stále používá substituční proměnnou, takže budete povýšeni o hodnotu, kterou chcete použít, ale můžete také předat přímo číslo.
Přečtěte si další informace o vytváření procedur a typy parametrů .
Mohli byste kód docela zjednodušit, abyste snížili opakování a opakované dotazy; vyhledat případové výrazy a návratovou klauzuli. Ale to není přímo relevantní.