UDF vs pohranjena procedura u SQL-u
SQL okruženje dolazi s različitim komponentama koje rade s njim za uspješno izvršavanje zadataka. Tu su korisnički definirana funkcija i pohranjeni postupak koji su zajednički u SQL okruženju. Razlike između ta dva prikazane su u nastavku.
Razlike
Prva razlika koja se vidi kod korisnički definirane funkcije je da je programirana na način da mora vratiti vrijednost. Spremljeni postupak ima određenu dopuštenje za vraćanje vrijednosti ili ne. To ovisi o tome da li pohranjeni postupak ima vrijednost koju treba vratiti.
Druga razlika koja se opaža između korisničke funkcije i pohranjene procedure tiče se izjava. Korisnički definirana funkcija omogućuje samo čitanje odabranih izjava dok DML izrazi nisu dopušteni. S druge strane, pohranjena procedura omogućava upotrebu i odabranih izjava, kao i DML izraza, koji se također mogu ažurirati i manipulirati..
Korisnički definirana funkcija dopustit će samo unos parametara, ali ne podržava izlaz istih parametara. Suprotno tome, pohranjeni postupak podržava i ulazne i izlazne parametre. UDF također ne dopušta uporabu blokova pokušaja hvatanja. Pohranjeni postupak omogućava upotrebu blokova pokušaj hvatanja za rukovanje iznimkama.
UDF također ne dopušta da se transakcije događaju unutar funkcija. Ova je funkcionalnost dostupna u pohranjenom postupku koji omogućava rukovanje transakcijama. UDF također ne dopušta upotrebu varijabli tablice, a također ne dopušta privremene tablice. Pohranjeni postupak, međutim, omogućuje upotrebu varijabli tablice, kao i privremene tablice u njoj.
Kad je u funkciji, UDF ne dopušta pozivanje spremljenih tablica s nje. To je sasvim drugačije kada je u pitanju pohranjeni postupak, koji omogućava pozivanje funkcije bez ikakvih ograničenja. Kad je s funkcijama, UDF ne dopušta pozivanje navedenih funkcija iz odabranog izraza. Pohranjeni postupak također drži da se procedure ne mogu pozivati od Gdje / Odaberi i Imati izjave. No Exec ili Execute može se koristiti za pozivanje ili čak izvršavanje spremljene procedure. Posljednje, ali ne najmanje bitno, UDF se može koristiti u stvaranju klauzule pridruživanja, iskorištavajući skup rezultata. U pohranjenom postupku to nije moguće jer nisu dozvoljeni nikakvi postupci u klauzuli o pridruživanju. Također je važno imati na umu da pohranjeni postupak omogućava povratak na nulu ili čak n vrijednosti, dok se UDF može vratiti samo na jednu određenu i unaprijed postavljenu vrijednost.
Sažetak
Obavezno za Function vraća vrijednost dok nije za pohranjeni postupak.
Odaberite izjave prihvaćene samo u UDF-u, dok DML izrazi nisu potrebni.
Pohranjeni postupak prihvaća sve izjave kao i DML izjave.
UDF dopušta samo ulaze, a ne izlaze.
Pohranjeni postupak dopušta i ulaze i izlaze.
Blokovi hvata ne mogu se koristiti u UDF-u, ali mogu se koristiti u pohranjenoj proceduri.
Nisu dopuštene transakcije u funkcijama UDF-a, ali u pohranjenom postupku su one dopuštene.
Samo varijable tablice mogu se koristiti u UDF-u, a ne privremene tablice.
Pohranjeni postupak omogućava i varijable tablice i privremene tablice.
UDF ne dopušta pozivanje pohranjenih postupaka s funkcija, dok pohranjeni postupci dopuštaju pozivanje funkcija.
UDF se koristi u klauzuli pridruživanja, dok se pohranjene procedure ne mogu koristiti u klauzuli pridruživanja.
Pohranjeni postupak uvijek će omogućiti povratak na nulu. UDF, naprotiv, ima vrijednosti koje se moraju vratiti na unaprijed određenu točku.