Forskel mellem lagret procedure og funktion

Anonim

Lagret procedure vs funktion

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

oprette eller erstat procedurens procedurenavn (parametre)

som

start

udsagn;

undtagelse

exception_handling

ende;

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

oprette eller udskift funktionsfunktionsnavn (parametre)

returneret_datatype

som

begynd

udsagn;

returnér returnering / variabel;

undtagelse;

exception_handling;

ende;

Lagrede procedurer

Som nævnt ovenfor gemmes procedurer til programmeringsblokke. De accepterer parametre som brugerindgang og behandler i henhold til logikken bag proceduren og giver resultatet (eller udfører en specifik handling). Disse parametre kan være IN, OUT og INOUT typer. Variabeldeklarationer, variable opgaver, kontrolopgørelser, sløjfer, SQL-forespørgsler og andre funktioner / procedure / pakkesamtaler kan være inden for procedurerne.

Funktioner

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

  • Enkelt rækkefunktioner (returnerer et enkelt resultat for hver række af forespørgslen)

Der er underkategorier af en enkelt rækkefunktioner.

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

Hvad er forskellen mellem funktion og lagret procedure?

• Alle funktioner skal returnere en værdi ved hjælp af RETURN-sætningen. Lagrede procedurer returnerer ikke værdier ved hjælp af RETURN-sætningen. RETURN statement i en procedure vil returnere sin kontrol til opkaldsprogrammet. OUT parametre kan bruges til at returnere værdier fra lagrede procedurer.

• Funktioner kan kaldes inden for forespørgsler, men lagrede procedurer kan ikke bruges inden for forespørgslen.

• RETURN datatype skal inkluderes for at oprette en funktion, men i lagret procedure DDL er det ikke.