Lagrad procedur kontra funktion
Lagrade procedurer och funktioner är två typer av programmeringsblock. Båda måste ha kallade namn. Dessa anropande namn används för att anropa dem inuti ett annat programmeringsblock som procedurer funktioner och paket eller SQL-frågor. Båda dessa objekttyper accepterar parametrar och utför uppgiften bakom dessa objekt. Detta är syntaxen (i ORACLE) för att skapa en lagrad procedur, skapa eller ersätt procedurens namn (parametrar)
as
begynn
statements;
exception
exception_handling
end;
Och här är syntaxen för att skapa en funktion (i ORACLE), skapa eller ersätt funktion funktionsnamn (parametrar)
retur return_datatype
as
begynn
statements;
retur return_value/variable;
exception;
exception_handling;
end;
Lagrade procedurer
Som nämnts ovan kallas lagrade procedurer för programmeringsblock. De accepterar parametrar som användarinmatning och process enligt logiken bakom proceduren och ger resultatet (eller utför en specifik åtgärd). Dessa parametrar kan vara IN-, OUT- och INOUT-typer. Variabeldeklarationer, variabeltilldelningar, kontrollsatser, loopar, SQL-frågor och andra funktioner/procedur/paketanrop kan finnas inne i procedurerna.
Funktioner
Funktioner kallas också för programmeringsblock, som måste returnera ett värde med RETURN-satsen, och innan de returnerar ett värde, utför dess kropp vissa åtgärder också (enligt den givna logiken). Funktioner accepterar också parametrar att köra. Funktioner kan anropas inne i frågorna. När en funktion anropas i en SELECT-fråga gäller den för varje rad i resultatuppsättningen för SELECT-frågan. Det finns flera kategorier av ORACLE-funktioner. De är,
Enkelradsfunktioner (returnerar ett enda resultat för varje rad i frågan)
Det finns underkategorier av funktioner med en enda rad.
- Numerisk funktion (t.ex.: ABS, SIN, COS)
- Teckenfunktion (Ex: CONCAT, INITCAP)
- Datum-tidsfunktion (t.ex.: LAST_DAY, NEXT_DAY)
- Konverteringsfunktioner (t.ex.: TO_CHAR, TO_DATE)
- Insamlingsfunktion (ex.: CARDINALITY, SET)
- Aggregerade funktioner (Returnerar en enstaka rad, baserat på en grupp rader. Ex: AVG, SUM, MAX)
- Analytiska funktioner
- Objektreferensfunktioner
- Modellfunktioner
- Användardefinierade funktioner
Vad är skillnaden mellan funktion och lagrad procedur?
• Alla funktioner måste returnera ett värde med RETURN-satsen. Lagrade procedurer returnerar inte värden med RETURN-satsen. RETURN-satsen i en procedur kommer att återföra dess kontroll till det anropande programmet. OUT-parametrar kan användas för att returnera värden från lagrade procedurer.
• Funktioner kan anropas inuti frågorna, men lagrade procedurer kan inte användas i frågorna.
• RETURN-datatypen måste inkluderas för att skapa en funktion, men i lagrad procedur DDL är den inte det.