Lagret procedure vs funktion
Gemte procedurer og funktioner er to typer programmeringsblokke. Begge af dem skal have kaldende navne. De kaldende navne bruges til at kalde dem inde i en anden programmeringsblok, f.eks. Procedurer og pakker eller SQL-forespørgsler. Begge disse objekttyper accepterer parametre og udfører opgaven bag disse objekter. Dette er syntaks (i ORACLE) for at oprette en gemt procedure,
oprette eller erstatte procedure procedurename (parametre)
som
begynde
udsagn;
undtagelse
exception_handling
ende;
Og her er syntaks for at oprette en funktion (i ORACLE),
oprette eller erstatte funktion funktionsnavn (parametre)
return return_datatype
som
begynde
udsagn;
return return_value / variabel;
undtagelse;
exception_handling;
ende;
Gemte procedurer
Som nævnt ovenfor benævnes lagrede procedurer programmeringsblokke. De accepterer parametre som brugerinput og -proces i henhold til logikken bag proceduren og giver resultatet (eller udfører en bestemt handling). Disse parametre kan være IN, OUT og INOUT typer. Variable erklæringer, variable tildelinger, kontrolerklæringer, loops, SQL-forespørgsler og andre funktioner / procedure / pakkeopkald kan være inde i procedurematerialet.
Funktioner
Funktioner kaldes også programmeringsblokke, som skal returnere en værdi ved hjælp af RETURN-sætning, og før den returnerer en værdi, udfører dens krop også nogle handlinger (i henhold til den givne logik). Funktioner accepterer også parametre, der skal køres. Funktioner kan kaldes inden for forespørgsler. Når der kaldes en funktion inde i en SELECT-forespørgsel, gælder den for hver række i resultatsættet for SELECT-forespørgslen. Der er flere kategorier af ORACLE-funktioner. De er,
Der er underkategorier af funktioner i en enkelt række.
Hvad er forskellen mellem funktion og lagret procedure? • Alle funktioner skal returnere en værdi vha. RETURN-sætning. Gemte procedurer returnerer ikke værdier ved hjælp af RETURN-sætning. RETURN-erklæring inden for en procedure vil returnere sin kontrol til det kaldende program. OUT-parametre kan bruges til at returnere værdier fra lagrede procedurer. • Funktioner kan kaldes inde i forespørgslerne, men gemte procedurer kan ikke bruges i forespørgslerne. • RETURN-datatype skal inkluderes for at oprette en funktion, men i den gemte procedure DDL er den ikke. |