sql >> Databasteknik >  >> RDS >> Oracle

konvertera till PROCEDUR pl/sql

Allt du behöver ändra är DECLARE (indikerar början av ett anonymt block) till CREATE PROCEDURE , med variabeln du för närvarande ställer in via en substitutionsvariabel som ett formellt argument; så istället för:

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

Gör det:

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

Du kan sedan anropa det från ett anonymt block, eller i SQL*Plus eller SQL Developer med execute stenografi:

set serveroutput on
execute my_proc(&veno);

Det här exemplet använder fortfarande en ersättningsvariabel så du kommer att befordras för värdet som ska användas, men du kan skicka ett nummer direkt också.

Läs mer om att skapa procedurer och typerna av parametrar .

Du kan förenkla koden en hel del för att minska upprepning och förfrågningar; slå upp kasusuttryck och den returnerande klausulen. Men det är inte direkt relevant.




  1. starta om mysql-servern på windows 7

  2. Hur kan jag göra en primärnyckel som AUTOINCREMENT

  3. Uppdatera en Join-vy utan att få ett felmeddelande om icke-nyckelbevarad

  4. Hur man ändrar kolumnstorlek för en vy i Oracle