Всичко, което трябва да промените, е 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 или SQL Developer с execute
съкратено:
set serveroutput on
execute my_proc(&veno);
Този пример все още използва променлива за заместване, така че ще бъдете повишени за стойността, която да използвате, но можете също да подадете число директно.
Прочетете повече за създаването на процедури и типовете параметри .
Можете да опростите кода доста, за да намалите повторенията и повторните заявки; потърсете case изрази и клаузата за връщане. Но това не е пряко уместно.