Skillnaden är- En funktion måste returnera ett värde (av vilken typ som helst) som standarddefinition av den, medan i fallet med en procedur måste du använda parametrar som OUT
eller IN OUT
parametrar för att få resultatet. Du kan använda en funktion i en vanlig SQL
där du inte kan använda en procedur i SQL
uttalanden.
Vissa skillnader mellan funktioner och procedurer
-
En funktion returnerar alltid ett värde med return-satsen medan en procedur kan returnera ett eller flera värden genom parametrar eller kanske inte returnerar alls. Även om
OUT
parametrar kan fortfarande användas i funktioner, de är inte tillrådliga och det finns inte heller fall där man kan hitta ett behov av att göra det. AnvänderOUT
parametern begränsar en funktion från att användas i en SQL-sats. -
Funktioner kan användas i typiska SQL-satser som
SELECT
,INSERT
,UPDATE
,DELETE
,MERGE
, medan procedurer inte kan. -
Funktioner används normalt för beräkningar där procedurer normalt används för att utföra affärslogik.
-
Oracle tillhandahåller möjligheten att skapa "funktionsbaserade index" för att förbättra prestandan för den efterföljande SQL-satsen. Detta gäller när du utför funktionen på en indexerad kolumn i where-satsen i en fråga.
Mer information om funktioner vs. Rutiner här och här.