Alles, was Sie ändern müssen, ist DECLARE
(zeigt den Beginn eines anonymen Blocks an) zu CREATE PROCEDURE
, mit der Variable, die Sie gerade über eine Substitutionsvariable als formales Argument festlegen; also statt:
DECLARE
veno emp.empno%type:=&veno;
vsal emp.sal%type;
vexp number;
BEGIN
...
END;
/
Mach es:
CREATE OR REPLACE PROCEDURE my_proc (veno IN emp.empno%type)
AS
vsal emp.sal%type;
vexp number;
BEGIN
...
END;
/
Sie können das dann von einem anonymen Block oder in SQL*Plus oder SQL Developer mit execute
aufrufen Kurzschrift:
set serveroutput on
execute my_proc(&veno);
In diesem Beispiel wird immer noch eine Substitutionsvariable verwendet, sodass Sie für den zu verwendenden Wert höher gestuft werden, aber Sie können auch direkt eine Zahl übergeben.
Lesen Sie mehr über das Erstellen von Prozeduren und die Typen von Parameter .
Sie könnten den Code ziemlich vereinfachen, um Wiederholungen und erneute Abfragen zu reduzieren. Schlagen Sie case-Ausdrücke und die Rückgabeklausel nach. Aber das ist nicht direkt relevant.