sql >> Database >  >> RDS >> Oracle

converteren naar PROCEDURE pl/sql

Het enige dat u hoeft te wijzigen, is de DECLARE (geeft het begin van een anonieme blokkering aan) om CREATE PROCEDURE , met de variabele die u momenteel instelt via een substitutievariabele als formeel argument; dus in plaats van:

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

Maak het:

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

Je kunt dat dan aanroepen vanuit een anoniem blok, of in SQL*Plus of SQL Developer met de execute steno:

set serveroutput on
execute my_proc(&veno);

In dit voorbeeld wordt nog steeds een vervangingsvariabele gebruikt, dus u wordt gepromoveerd voor de te gebruiken waarde, maar u kunt ook rechtstreeks een getal doorgeven.

Lees meer over het maken van procedures en de typen parameters .

Je zou de code een beetje kunnen vereenvoudigen om herhaling en opnieuw opvragen te verminderen; zoek case-expressies en de terugkerende clausule op. Maar dat is niet direct relevant.




  1. door komma's gescheiden argument voor IN-operator, MySQL

  2. Oracle-certificeringen

  3. Wat is dynamische SQL?

  4. swi prolog mysql + web