Forskellen er- En funktion skal returnere en værdi (af enhver type) som standarddefinition af den, mens du i tilfælde af en procedure skal bruge parametre som OUT
eller IN OUT
parametre for at få resultaterne. Du kan bruge en funktion i en normal SQL
hvor du ikke kan bruge en procedure i SQL
udsagn.
Nogle forskelle mellem funktioner og procedurer
-
En funktion returnerer altid en værdi ved hjælp af return-sætningen, mens en procedure kan returnere en eller flere værdier gennem parametre eller slet ikke returnerer. Selvom
OUT
parametre kan stadig bruges i funktioner, de er ikke tilrådelige, og der er heller ikke tilfælde, hvor man kan finde et behov for at gøre det. Brug afOUT
parameter begrænser en funktion i at blive brugt i en SQL-sætning. -
Funktioner kan bruges i typiske SQL-sætninger som
SELECT
,INSERT
,UPDATE
,DELETE
,MERGE
, mens procedurer ikke kan. -
Funktioner bruges normalt til beregninger, hvor procedurer normalt bruges til at udføre forretningslogik.
-
Oracle giver mulighed for at skabe "funktionsbaserede indekser" for at forbedre ydeevnen af den efterfølgende SQL-sætning. Dette gælder, når du udfører funktionen på en indekseret kolonne i where-sætning af en forespørgsel.
Flere oplysninger om funktioner vs. Procedurer her og her.