UDF vs. tallennettu menettely SQL: ssä
SQL-ympäristön mukana toimitetaan erilaisia komponentteja käsillä olevien tehtävien suorittamiseksi onnistuneesti. On käyttäjän määrittelemä toiminto ja tallennettu menettely, jotka ovat yleisiä SQL-ympäristössä. Näiden kahden välisiä eroja tarkastellaan jäljempänä.
erot
Ensimmäinen ero, joka havaitaan käyttäjän määrittämässä toiminnossa, on se, että se on ohjelmoitu siten, että sen on palautettava arvo. Tallennetussa proseduurissa on jonkin verran varausta arvon palauttamiseen vai ei. Tämä riippuu siitä, onko tallennetulla menettelyllä palautusarvo vai ei.
Toinen ero käyttäjän määrittämän toiminnon ja tallennetun menettelyn välillä näkee lauseet. Käyttäjän määrittelemä toiminto sallii vain tiettyjen lauseiden lukemisen, kun taas DML-lauseet eivät ole sallittuja. Toisaalta tallennettu menettely sallii sekä valittujen lauseiden että DML-lauseiden käytön, joita voidaan myös päivittää ja manipuloida.
Käyttäjän määrittelemä toiminto sallii vain parametrien syöttämisen, mutta ei tue samojen parametrien lähtöä. Tallennettu menettely, päinvastoin, tukee sekä tulo- että lähtöparametreja. UDF ei myöskään salli try-catch-lohkojen käyttöä. Tallennettu menettely sallii kokeilulähtölohkojen käytön poikkeusten käsittelyyn.
UDF ei myöskään salli tapahtumien tapahtumista toimintojen sisällä. Tämä toiminnallisuus on käytettävissä tallennetussa menettelyssä, joka mahdollistaa tapahtumien käsittelyn. UDF ei myöskään salli taulukomuuttujien käyttöä eikä väliaikaisia taulukoita. Tallennettu menettely sallii kuitenkin taulukon muuttujien sekä väliaikaisen taulukon käytön siinä.
Kun toiminto on käytössä, UDF ei salli tallennettujen taulukoiden kutsumista siitä. Tämä on aivan erilainen tallennetun proseduurin suhteen, joka mahdollistaa toiminnon kutsumisen ilman rajoituksia. Kun toiminnot ovat käytössä, UDF ei salli mainittujen toimintojen kutsumista valitusta käskystä. Tallennettu menettely pitää myös sitä, että menettelyjä ei voida kutsua Mistä / Valitse- ja Otto-lauseista. Exec tai Execute voidaan kuitenkin käyttää tallennetun toimenpiteen soittamiseen tai jopa suorittamiseen. Viimeisenä, mutta ei vähäisimpänä, on se, että UDF: tä voidaan käyttää liittymislausekkeen luomiseen hyödyntäen tulosjoukkoa. Tallennetussa menettelyssä tämä ei ole mahdollista, koska mitään toimenpiteitä ei sallita liittymislausekkeessa. On myös tärkeää huomata, että tallennettu menettely sallii palaamisen nollaan tai jopa n-arvoon, kun taas UDF voi palata vain yhteen tiettyyn ja esiasetettuun arvoon, joka on esiasetettu.
Yhteenveto
Funktion on pakollista palauttaa arvo, kun taas ei ole tallennetulle proseduurille.
Valitse vain UDF: ssä hyväksytyt lauseet, kun taas DML-käskyjä ei vaadita.
Tallennettu menettely hyväksyy kaikki lauseet ja DML-lauseet.
UDF sallii vain tulot eikä lähtöjä.
Tallennettu menettely sallii sekä tulot että lähdöt.
Catch-lohkoja ei voida käyttää UDF: ssä, mutta niitä voidaan käyttää tallennetussa menettelyssä.
UDF: n funktioissa ei sallita tapahtumia, mutta tallennetussa menettelyssä ne ovat sallittuja.
Vain taulukkomuuttujia voidaan käyttää UDF: ssä, ei väliaikaisia taulukoita.
Tallennettu menettely sallii sekä taulukomuuttujat että väliaikaiset taulukot.
UDF ei salli tallennettujen toimintojen kutsumista toiminnoista, kun taas tallennetut proseduurit sallivat toimintojen kutsumisen.
UDF: tä käytetään liittymislausekkeessa, kun taas tallennettuja menettelyjä ei voida käyttää liittymislauseessa.
Tallennettu menettely antaa aina palata nollaan. UDF: llä on päinvastoin arvot, joiden on palautettava ennalta määrättyyn pisteeseen.