Forskel mellem lagret procedure og funktion

Lagret procedure vs funktion
 

Gemte procedurer og funktioner er to typer programmeringsblokke. Begge af dem skal have kaldende navne. De kaldende navne bruges til at kalde dem inde i en anden programmeringsblok, f.eks. Procedurer og pakker eller SQL-forespørgsler. Begge disse objekttyper accepterer parametre og udfører opgaven bag disse objekter. Dette er syntaks (i ORACLE) for at oprette en gemt procedure,

 oprette eller erstatte procedure procedurename (parametre)

 som

 begynde

     udsagn;

 undtagelse

     exception_handling

 ende;

Og her er syntaks for at oprette en funktion (i ORACLE),

oprette eller erstatte funktion funktionsnavn (parametre)

return return_datatype

som

begynde

udsagn;

return return_value / variabel;

undtagelse;

exception_handling;

ende;

Gemte procedurer

Som nævnt ovenfor benævnes lagrede procedurer programmeringsblokke. De accepterer parametre som brugerinput og -proces i henhold til logikken bag proceduren og giver resultatet (eller udfører en bestemt handling). Disse parametre kan være IN, OUT og INOUT typer. Variable erklæringer, variable tildelinger, kontrolerklæringer, loops, SQL-forespørgsler og andre funktioner / procedure / pakkeopkald kan være inde i procedurematerialet.

Funktioner

Funktioner kaldes også programmeringsblokke, som skal returnere en værdi ved hjælp af RETURN-sætning, og før den returnerer en værdi, udfører dens krop også nogle handlinger (i henhold til den givne logik). Funktioner accepterer også parametre, der skal køres. Funktioner kan kaldes inden for forespørgsler. Når der kaldes en funktion inde i en SELECT-forespørgsel, gælder den for hver række i resultatsættet for SELECT-forespørgslen. Der er flere kategorier af ORACLE-funktioner. De er,

  • Funktioner med en række (returnerer et enkelt resultat for hver række af forespørgslen)

Der er underkategorier af funktioner i en enkelt række.

  • Numerisk funktion (Eks .: ABS, SIN, COS)
  • Tegnfunktion (Eks .: CONCAT, INITCAP)
  • Dato tid funktion (Eks .: LAST_DAY, NEXT_DAY)
  • Konverteringsfunktioner (Eks .: TO_CHAR, TO_DATE)
  • Samlingsfunktion (Eks .: KARDINALITET, SET)
  • Samlede funktioner (Returnerer en enkelt række, baseret på en gruppe af rækker. Eks .: AVG, SUM, MAX)
  • Analytiske funktioner
  • Objektreferencefunktioner
  • Modelfunktioner
  • Brugerdefinerede funktioner

Hvad er forskellen mellem funktion og lagret procedure?

• Alle funktioner skal returnere en værdi vha. RETURN-sætning. Gemte procedurer returnerer ikke værdier ved hjælp af RETURN-sætning. RETURN-erklæring inden for en procedure vil returnere sin kontrol til det kaldende program. OUT-parametre kan bruges til at returnere værdier fra lagrede procedurer.

• Funktioner kan kaldes inde i forespørgslerne, men gemte procedurer kan ikke bruges i forespørgslerne.

• RETURN-datatype skal inkluderes for at oprette en funktion, men i den gemte procedure DDL er den ikke.