Forskjell mellom lagret prosedyre og funksjon

Anonim

Lagret prosedyre mot funksjon

Lagrede prosedyrer og funksjoner er to typer programmeringsblokker. Begge må ha ringer navn. De kaller navnene brukes til å ringe dem inn i en annen programmeringsblokk som prosedyrerfunksjoner og pakker eller SQL-spørringer. Begge disse objekttypene godtar parametere og utfører oppgaven bak disse objektene. Dette er syntaksen (i ORACLE) for å lage en lagret prosedyre,

opprett eller erstatt prosedyreprosessnavn (parametere)

som

begynne

uttalelser;

unntak

exception_handling

end;

Og her er syntaksen for å lage en funksjon (i ORACLE),

opprett eller erstatt funksjonsfunksjonsnavn (parametere)

retur return_datatype

som

begynn

uttalelser;

returnere retur / verdi / variabel;

unntak;

exception_handling;

end;

Lagrede prosedyrer

Som nevnt ovenfor er lagrede prosedyrer kalt programmeringsblokker. De aksepterer parametere som brukerinngang og prosess i henhold til logikken bak prosedyren og gir resultatet (eller utfører en bestemt handling). Disse parametrene kan være IN, OUT og INOUT. Variabeldeklarasjoner, variable oppgaver, kontrollopplysninger, sløyfer, SQL-spørringer og andre funksjoner / prosedyre / pakkeanrop kan være inne i prosedyrene.

Funksjoner

Funksjoner kalles også programmeringsblokker, som må returnere en verdi ved hjelp av RETURN-setningen, og før den returnerer en verdi, utfører kroppen også noen handlinger (i henhold til den oppgitte logikken). Funksjoner aksepterer også parametere for å kjøre. Funksjoner kan kalles inne i spørringene. Når en funksjon kalles inne i en SELECT-spørring, gjelder den for hver rad i resultatsettet for SELECT-spørringen. Det finnes flere kategorier av ORACLE-funksjoner. De er,

  • Enkeltradsfunksjoner (returnerer et enkelt resultat for hver rad av spørringen)

Det finnes underkategorier av en enkelt radfunksjon.

  • Numerisk funksjon (Eks: ABS, SIN, COS)
  • Tegnfunksjon (Eks: CONCAT, INITCAP)
  • Datotidfunksjon (Ex: LAST_DAY, NEXT_DAY)
  • Konverteringsfunksjoner (Ex: TO_CHAR, TO_DATE)
  • Samlingsfunksjon (Eks: KARDINALITET, SET)
  • Aggregatfunksjoner (Returnerer en enkelt rad, basert på en gruppe rader. Eks: AVG, SUM, MAX)
  • Analytiske funksjoner
  • Objektreferansefunksjoner
  • Modellfunksjoner
  • Brukerdefinerte funksjoner

Hva er forskjellen mellom funksjon og lagret prosedyre?

• Alle funksjoner må returnere en verdi ved hjelp av RETURN-setningen. Lagrede prosedyrer returnerer ikke verdier ved hjelp av RETURN-setningen. RETURN-setningen inne i en prosedyre vil returnere kontrollen til anropsprogrammet. OUT-parametere kan brukes til å returnere verdier fra lagrede prosedyrer.

• Funksjoner kan kalles inne i spørringene, men lagrede prosedyrer kan ikke brukes innenfor spørringene.

• RETURN datatype må inkluderes for å opprette en funksjon, men i lagret prosedyre DDL, er det ikke.