Todo lo que necesita cambiar es DECLARE
(que indica el inicio de un bloque anónimo) a CREATE PROCEDURE
, con la variable que está configurando actualmente a través de una variable de sustitución como argumento formal; así que en lugar de:
DECLARE
veno emp.empno%type:=&veno;
vsal emp.sal%type;
vexp number;
BEGIN
...
END;
/
Hazlo:
CREATE OR REPLACE PROCEDURE my_proc (veno IN emp.empno%type)
AS
vsal emp.sal%type;
vexp number;
BEGIN
...
END;
/
Luego puede llamarlo desde un bloque anónimo, o en SQL*Plus o SQL Developer con execute
taquigrafía:
set serveroutput on
execute my_proc(&veno);
Este ejemplo todavía usa una variable de sustitución, por lo que se le promocionará por el valor a usar, pero también puede pasar un número directamente.
Obtenga más información sobre la creación de procedimientos y los tipos de parámetros .
Podría simplificar bastante el código para reducir la repetición y las nuevas consultas; busque expresiones de caso y la cláusula de retorno. Pero eso no es directamente relevante.