Verschil tussen UDF en opgeslagen procedure in SQL Verschil tussen
UDF versus opgeslagen procedure in SQL
De SQL-omgeving wordt geleverd met verschillende componenten die ermee werken voor een succesvolle levering van de taken die voorhanden zijn. Er is de door de gebruiker gedefinieerde functie en de opgeslagen procedure, die gebruikelijk zijn binnen de SQL-omgeving. Het zijn de verschillen tussen deze twee die hieronder worden besproken.
Verschillen
Het eerste verschil dat wordt gezien met de door de gebruiker gedefinieerde functie, is dat het zodanig is geprogrammeerd dat het een waarde moet retourneren. De opgeslagen procedure houdt wel rekening met het al dan niet retourneren van een waarde. Dit hangt ervan af of de opgeslagen procedure een waarde heeft om terug te keren.
Een ander verschil tussen de door de gebruiker gedefinieerde functie en de opgeslagen procedure betreft uitspraken. Met de door de gebruiker gedefinieerde functie kunnen alleen geselecteerde instructies worden gelezen terwijl DML-instructies niet zijn toegestaan. Aan de andere kant staat de opgeslagen procedure het gebruik van beide select-instructies toe, evenals de DML-instructies, die ook kunnen worden bijgewerkt en gemanipuleerd.
De door de gebruiker gedefinieerde functie staat alleen invoer van parameters toe maar ondersteunt de uitvoer van dezelfde parameters niet. Opgeslagen procedure daarentegen ondersteunt zowel invoer- als uitvoerparameters. De UDF staat ook geen gebruik van try-catch-blokken toe. Opgeslagen procedure maakt het gebruik van de try-catch-blokken voor uitzonderingsafhandeling mogelijk.
UDF staat ook niet toe dat transacties binnen functies plaatsvinden. Deze functionaliteit is beschikbaar in de opgeslagen procedure die transacties kan verwerken. UDF staat ook het gebruik van tabelvariabelen niet toe en het staat ook geen tijdelijke tabellen toe. Met de opgeslagen procedure kunnen echter zowel tabelvariabelen als een tijdelijke tabel worden gebruikt.
In een functie staat UDF niet toe dat opgeslagen tabellen worden aangeroepen. Dit is heel anders als het gaat om de opgeslagen procedure, waardoor de functie zonder enige beperking kan worden aangeroepen. Wanneer u met functies werkt, staat UDF niet toe dat de genoemde functies worden aangeroepen vanuit een select-instructie. Opgeslagen procedure houdt ook in dat procedures niet kunnen worden aangeroepen vanuit Where / Select and Having-instructies. Exec of Execute kan echter worden gebruikt om de opgeslagen procedure aan te roepen of zelfs uit te voeren. Last but not least is dat UDF kan worden gebruikt bij het maken van een join-clausule, waarbij gebruik wordt gemaakt van de resultatenset. In de opgeslagen procedure is dit niet mogelijk omdat er geen procedures zijn toegestaan in een join-clausule. Het is ook belangrijk op te merken dat de opgeslagen procedure het mogelijk maakt om terug te keren naar nul of zelfs n waarden, terwijl UDF alleen naar een specifieke en vooraf ingestelde waarde kan terugkeren die vooraf is ingesteld.
Samenvatting
Het is verplicht voor Function om een waarde te retourneren terwijl deze niet voor de opgeslagen procedure is.
Selecteer alleen instructies die zijn geaccepteerd in UDF, terwijl DML-instructies niet zijn vereist.
Opgeslagen procedure accepteert zowel instructies als DML-instructies.
UDF staat alleen ingangen toe en niet uitgangen.
Opgeslagen procedure maakt zowel invoer als uitvoer mogelijk.
Vangstblokken kunnen niet in UDF worden gebruikt, maar kunnen in de opgeslagen procedure worden gebruikt.
Geen transacties toegestaan in functies in UDF maar in de opgeslagen procedure zijn ze toegestaan.
Alleen tabelvariabelen kunnen worden gebruikt in UDF en niet in tijdelijke tabellen.
Opgeslagen procedure maakt zowel tabelvariabelen als tijdelijke tabellen mogelijk.
UDF staat niet toe dat opgeslagen procedures worden aangeroepen vanuit functies terwijl opgeslagen procedures het aanroepen van functies mogelijk maken.
UDF wordt gebruikt in de join-component, terwijl opgeslagen procedures niet kunnen worden gebruikt in de join-clausule.
Opgeslagen procedure zorgt altijd voor terugkeer naar nul. UDF daarentegen heeft waarden die terug moeten naar een vooraf bepaald punt.