Forskel mellem lagret procedure og funktion
Lagret procedure vs funktion
Lagrede procedurer og funktioner er to typer programmeringsblokke. Begge skal have navne. De kaldende navne bruges til at kalde dem inde i en anden programmeringsblok ligesom procedurer og pakker eller SQL-forespørgsler. Begge disse objekttyper accepterer parametre og udfører opgaven bag disse objekter. Dette er syntaxen (i ORACLE) for at oprette en lagret procedure,
oprette eller erstat procedurens procedurenavn (parametre)
som
start
udsagn;
undtagelse
exception_handling
ende;
Og her er syntaksen for at oprette en funktion (i ORACLE),
oprette eller udskift funktionsfunktionsnavn (parametre)
returneret_datatype
som
begynd
udsagn;
returnér returnering / variabel;
undtagelse;
exception_handling;
ende;
Lagrede procedurer
Som nævnt ovenfor gemmes procedurer til programmeringsblokke. De accepterer parametre som brugerindgang og behandler i henhold til logikken bag proceduren og giver resultatet (eller udfører en specifik handling). Disse parametre kan være IN, OUT og INOUT typer. Variabeldeklarationer, variable opgaver, kontrolopgørelser, sløjfer, SQL-forespørgsler og andre funktioner / procedure / pakkesamtaler kan være inden for procedurerne.
Funktioner
Funktioner kaldes også programmeringsblokke, som skal returnere en værdi ved hjælp af RETURN-sætningen, og inden den returnerer en værdi, udfører kroppen også nogle handlinger (ifølge den givne logik). Funktioner accepterer også parametre til at køre. Funktioner kan kaldes inden for forespørgsler. Når en funktion kaldes inde i en SELECT-forespørgsel, gælder den for hver række i resultatsættet af SELECT-forespørgslen. Der er flere kategorier af ORACLE-funktioner. De er
- Enkelt rækkefunktioner (returnerer et enkelt resultat for hver række af forespørgslen)
Der er underkategorier af en enkelt rækkefunktioner.
- Numerisk funktion (Ex: ABS, SIN, COS)
- Tegnfunktion (Ex: CONCAT, INITCAP)
- Datotidsfunktion (Ex: LAST_DAY, NEXT_DAY)
- Konverteringsfunktioner (Ex: TO_CHAR, TO_DATE)
- Samlingsfunktion (Eks: KARDINALITET, SET)
- Samlede funktioner (Returnerer en enkelt række baseret på en række rækker. Eks: AVG, SUM, MAX)
- Analytiske funktioner
- Objektreferencer
- Modelfunktioner
- Brugerdefinerede funktioner
Hvad er forskellen mellem funktion og lagret procedure? • Alle funktioner skal returnere en værdi ved hjælp af RETURN-sætningen. Lagrede procedurer returnerer ikke værdier ved hjælp af RETURN-sætningen. RETURN statement i en procedure vil returnere sin kontrol til opkaldsprogrammet. OUT parametre kan bruges til at returnere værdier fra lagrede procedurer. • Funktioner kan kaldes inden for forespørgsler, men lagrede procedurer kan ikke bruges inden for forespørgslen. • RETURN datatype skal inkluderes for at oprette en funktion, men i lagret procedure DDL er det ikke. |