UDF vs saugoma procedūra SQL
SQL aplinka aprūpinta įvairiais komponentais, padedančiais sėkmingai atlikti užduotis. Yra vartotojo apibrėžta funkcija ir saugoma procedūra, kurios yra bendros SQL aplinkoje. Toliau apžvelgiami šių dviejų skirtumai.
Skirtumai
Pirmasis skirtumas, kuris pastebimas naudojant vartotojo apibrėžtą funkciją, yra tas, kad jis yra užprogramuotas taip, kad turi grąžinti reikšmę. Išsaugota procedūra turi tam tikrą išimtį, ar grąžinti vertę, ar ne. Tai priklauso nuo to, ar išsaugotą procedūrą reikia grąžinti.
Kitas skirtumas tarp vartotojo apibrėžtos funkcijos ir saugomos procedūros yra susijęs su teiginiais. Naudotojo apibrėžta funkcija leidžia skaityti tik tam tikrus teiginius, tuo tarpu DML sakiniai neleidžiami. Kita vertus, saugoma procedūra leidžia naudoti tiek pasirinktus teiginius, tiek DML sakinius, kuriuos taip pat galima atnaujinti ir jais manipuliuoti.
Vartotojo nustatyta funkcija leis įvesti tik parametrus, bet nepalaiko tų pačių parametrų išvedimo. Laikoma procedūra, priešingai, palaiko tiek įvesties, tiek išvesties parametrus. UDF taip pat neleidžia naudoti bandymų sugauti blokų. Išsaugota procedūra leidžia naudoti bandymo sugauti blokus, kad būtų galima tvarkyti išimtis.
UDF taip pat neleidžia operacijoms įvykti funkcijų srityje. Ši funkcija pasiekiama išsaugotoje procedūroje, leidžiančioje tvarkyti operacijas. UDF taip pat neleidžia naudoti lentelių kintamųjų ir neleidžia naudoti laikinų lentelių. Taikant saugomą procedūrą, joje galima naudoti ir lentelės kintamuosius, ir laikiną lentelę.
Kai funkcija veikia, UDF neleidžia iš jos iškviesti saugomų lentelių. Tai gana skirtinga, kai kalbama apie saugomą procedūrą, leidžiančią iškviesti funkciją be jokių apribojimų. Kai yra funkcijos, UDF neleidžia iškviesti minėtų funkcijų iš pasirinktos sakinio. Išsaugota procedūra taip pat sako, kad procedūros negali būti iškviečiamos iš „Kur / Pasirinkite“ ir „Turintys“ teiginius. Tačiau „Exec“ arba „Execute“ gali būti naudojami skambinant ar net vykdant išsaugotą procedūrą. Paskutinis, bet ne mažiau svarbus dalykas yra tas, kad UDF gali būti naudojamas kuriant prisijungimo sąlygą, panaudojant rezultatų rinkinį. Saugotoje procedūroje tai neįmanoma, nes prisijungimo sąlygoje neleidžiamos jokios procedūros. Taip pat svarbu atkreipti dėmesį, kad išsaugota procedūra leidžia grįžti prie nulio ar net n vertės, tuo tarpu UDF gali grįžti tik prie vienos konkrečios ir iš anksto nustatytos vertės, kuri yra iš anksto nustatyta..
Santrauka
Funkcijai Funkcija privaloma grąžinti reikšmę, o ne saugomai procedūrai.
Pasirinkite teiginius, priimtus tik UDF, o DML sakinius nereikia.
Įrašyta procedūra priima visus teiginius, taip pat DML teiginius.
UDF leidžia naudoti tik įėjimus, o ne išėjimus.
Įrašyta procedūra leidžia atlikti tiek įėjimus, tiek išėjimus.
Sugavimo blokai negali būti naudojami UDF, bet gali būti naudojami saugomoje procedūroje.
Negalima atlikti jokių operacijų UDF funkcijose, tačiau saugomoje procedūroje jos yra leidžiamos.
UDF gali būti naudojami tik lentelių kintamieji, o ne laikinosios lentelės.
Išsaugota procedūra leidžia naudoti ir lentelių kintamuosius, ir laikinas lenteles.
UDF neleidžia iš funkcijų iškviesti saugomų procedūrų, o saugomos procedūros leidžia iškviesti funkcijas.
UDF naudojamas prisijungimo sąlygoje, o saugomos procedūros negali būti naudojamos prisijungimo sąlygoje.
Įrašyta procedūra visada leis grįžti į nulį. Priešingai, UDF turi vertybių, kurios turi grįžti į iš anksto nustatytą tašką.