Procediment emmagatzemat versus funció
Els procediments i les funcions emmagatzemades són dos tipus de blocs de programació. Tots dos han de tenir noms de crida. Aquests noms de trucada s'utilitzen per cridar-los dins d'un altre bloc de programació, com ara funcions de procediments i paquets o consultes SQL. Tots dos tipus d'objecte accepten paràmetres i realitzen la tasca darrere d'aquests objectes. Aquesta és la sintaxi (a ORACLE) per crear un procediment emmagatzemat, crear o substituir el procediment nom del procediment (paràmetres)
com a
begin
declaracions;
excepció
exception_handling
final;
I aquí teniu la sintaxi per crear una funció (a ORACLE), crear o substituir la funció nom_funció (paràmetres)
return return_datatype
com a
begin
declaracions;
return return_value/variable;
excepció;
exception_handling;
final;
Procediments emmagatzemats
Com s'ha esmentat anteriorment, els procediments emmagatzemats s'anomenen blocs de programació. Accepten paràmetres com a entrada de l'usuari i processen segons la lògica del procediment i donen el resultat (o realitzen una acció específica). Aquests paràmetres poden ser de tipus IN, OUT i INOUT. Les declaracions de variables, les assignacions de variables, les instruccions de control, els bucles, les consultes SQL i altres trucades a funcions/procediments/paquets poden estar dins del cos dels procediments.
Funcions
Les funcions també s'anomenen blocs de programació, que han de retornar un valor mitjançant la instrucció RETURN, i abans de retornar un valor, el seu cos també realitza algunes accions (segons la lògica donada). Les funcions també accepten paràmetres per executar-se. Les funcions es poden cridar dins de les consultes. Quan es crida una funció dins d'una consulta SELECT, s'aplica a cada fila del conjunt de resultats de la consulta SELECT. Hi ha diverses categories de funcions ORACLE. Són,
Funcions d'una sola fila (retorn un únic resultat per a totes i cadascuna de les files de la consulta)
Hi ha subcategories de funcions d'una sola fila.
- Funció numèrica (Ex: ABS, SIN, COS)
- Funció de caràcter (Ex: CONCAT, INITCAP)
- Funció de data i hora (Ex: LAST_DAY, NEXT_DAY)
- Funcions de conversió (Ex: TO_CHAR, TO_DATE)
- Funció de recollida (ex.: CARDINALITAT, SET)
- Funcions agregades (Retorna una sola fila, basada en un grup de files. Per exemple: AVG, SUM, MAX)
- Funcions analítiques
- Funcions de referència d'objectes
- Funcions del model
- Funcions definides per l'usuari
Quina diferència hi ha entre la funció i el procediment emmagatzemat?
• Totes les funcions han de retornar un valor mitjançant la instrucció RETURN. Els procediments emmagatzemats no retornen valors mitjançant la instrucció RETURN. La instrucció RETURN dins d'un procediment retornarà el seu control al programa cridant. Els paràmetres OUT es poden utilitzar per retornar valors dels procediments emmagatzemats.
• Les funcions es poden cridar dins de les consultes, però els procediments emmagatzemats no es poden utilitzar dins de les consultes.
• El tipus de dades RETURN s'ha d'incloure per crear una funció, però al procediment emmagatzemat DDL, no ho és.