Der Unterschied besteht darin, dass eine Funktion standardmäßig einen Wert (beliebigen Typs) zurückgeben muss, während Sie im Fall einer Prozedur Parameter wie OUT
verwenden müssen oder IN OUT
Parameter, um die Ergebnisse zu erhalten. Sie können eine Funktion in einem normalen SQL
verwenden wobei Sie keine Prozedur in SQL
verwenden können Aussagen.
Einige Unterschiede zwischen Funktionen und Prozeduren
-
Eine Funktion gibt immer einen Wert mit der return-Anweisung zurück, während eine Prozedur einen oder mehrere Werte über Parameter zurückgeben kann oder überhaupt nicht zurückgibt. Obwohl
OUT
Parameter können immer noch in Funktionen verwendet werden, sie sind nicht ratsam und es gibt auch keine Fälle, in denen dies erforderlich sein könnte. MitOUT
-Parameter schränkt die Verwendung einer Funktion in einer SQL-Anweisung ein. -
Funktionen können in typischen SQL-Anweisungen wie
SELECT
verwendet werden ,INSERT
,UPDATE
,DELETE
,MERGE
, während Prozeduren dies nicht können. -
Funktionen werden normalerweise für Berechnungen verwendet, während Prozeduren normalerweise zum Ausführen von Geschäftslogik verwendet werden.
-
Oracle bietet die Möglichkeit, "funktionsbasierte Indizes" zu erstellen, um die Leistung der nachfolgenden SQL-Anweisung zu verbessern. Dies gilt, wenn die Funktion für eine indizierte Spalte in der Where-Klausel einer Abfrage ausgeführt wird.
Weitere Informationen zu Funktionen vs. Verfahren hier und hier.