Oracle
 sql >> Base de données >  >> RDS >> Oracle

convertir en PROCEDURE pl/sql

Tout ce que vous devez changer est le DECLARE (indiquant le début d'un bloc anonyme) à CREATE PROCEDURE , avec la variable que vous définissez actuellement via une variable de substitution comme argument formel ; donc au lieu de :

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

Réalisez :

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

Vous pouvez ensuite l'appeler à partir d'un bloc anonyme, ou dans SQL*Plus ou SQL Developer avec le execute raccourci :

set serveroutput on
execute my_proc(&veno);

Cet exemple utilise toujours une variable de substitution, vous serez donc promu pour la valeur à utiliser, mais vous pouvez également transmettre directement un nombre.

En savoir plus sur la création de procédures et les types de paramètres .

Vous pouvez simplifier un peu le code pour réduire les répétitions et les nouvelles requêtes ; rechercher les expressions de cas et la clause de retour. Mais ce n'est pas directement pertinent.