Oracle
 sql >> Database >  >> RDS >> Oracle

convertire in PROCEDURA pl/sql

Tutto ciò che devi modificare è il DECLARE (indicando l'inizio di un blocco anonimo) a CREATE PROCEDURE , con la variabile che stai attualmente impostando tramite una variabile di sostituzione come argomento formale; quindi invece di:

DECLARE
     veno  emp.empno%type:=&veno;
     vsal  emp.sal%type;
     vexp  number;
BEGIN
...
END;
/

Fallo:

CREATE OR REPLACE PROCEDURE my_proc (veno IN emp.empno%type)
AS
     vsal  emp.sal%type;
     vexp  number;
BEGIN
...
END;
/

Puoi quindi chiamarlo da un blocco anonimo o in SQL*Plus o SQL Developer con execute stenografia:

set serveroutput on
execute my_proc(&veno);

Questo esempio utilizza ancora una variabile di sostituzione, quindi verrai promosso per il valore da utilizzare, ma puoi anche passare direttamente un numero.

Ulteriori informazioni sulla creazione di procedure e i tipi di parametri .

Potresti semplificare un po' il codice per ridurre le ripetizioni e le richieste; cercare le espressioni case e la clausola di ritorno. Ma non è direttamente rilevante.