La differenza è:una funzione deve restituire un valore (di qualsiasi tipo) per definizione predefinita, mentre nel caso di una procedura è necessario utilizzare parametri come OUT
o IN OUT
parametri per ottenere i risultati. Puoi usare una funzione in un normale SQL
dove non puoi usare una procedura in SQL
dichiarazioni.
Alcune differenze tra funzioni e procedure
-
Una funzione restituisce sempre un valore utilizzando l'istruzione return mentre una procedura può restituire uno o più valori tramite parametri o non restituire affatto. Tuttavia,
OUT
i parametri possono ancora essere utilizzati nelle funzioni, non sono consigliabili né ci sono casi in cui si potrebbe trovare la necessità di farlo. UsandoOUT
parametro limita l'utilizzo di una funzione in un'istruzione SQL. -
Le funzioni possono essere utilizzate nelle tipiche istruzioni SQL come
SELECT
,INSERT
,UPDATE
,DELETE
,MERGE
, mentre le procedure non possono. -
Le funzioni vengono normalmente utilizzate per i calcoli mentre le procedure vengono normalmente utilizzate per l'esecuzione della logica aziendale.
-
Oracle fornisce la possibilità di creare "indici basati su funzioni" per migliorare le prestazioni della successiva istruzione SQL. Ciò si applica quando si esegue la funzione su una colonna indicizzata nella clausola where di una query.
Maggiori informazioni sulle funzioni vs. Procedure qui e qui.