Skillnad mellan UDF och lagrad procedur i SQL Skillnad mellan

Anonim

UDF vs lagrad procedur i SQL

SQL-miljön levereras med olika komponenter som arbetar med den för framgångsrik leverans av de aktuella uppgifterna. Det finns den användardefinierade funktionen och den lagrade proceduren, som är vanliga inom SQL-miljön. Det är skillnaderna mellan dessa två som ses nedan.

Skillnader

Den första skillnaden som ses med den användardefinierade funktionen är att den är programmerad så att den måste returnera ett värde. Den lagrade proceduren har viss ersättning för huruvida eller inte ett värde ska returneras. Det beror på huruvida den lagrade proceduren har ett värde att returnera.

En annan skillnad som ses mellan den användardefinierade funktionen och den lagrade proceduren gäller uttalanden. Den användardefinierade funktionen tillåter bara att valda satser ska läsas medan DML-satser inte är tillåtna. Å andra sidan tillåter lagrade procedurer användandet av både valda uttalanden, liksom DML-deklarationerna, som också kan uppdateras och manipuleras.

Den användardefinierade funktionen tillåter bara inmatning av parametrar men stöder inte utgången av samma parametrar. Lagrad procedur, tvärtom, stöder både inmatnings- och utgångsparametrar. UDF tillåter inte heller användning av provtagningsblock. Lagrad procedur möjliggör användning av försöksfångstblocken för undantagshantering.

UDF tillåter inte att transaktioner uppträder inom funktioner. Denna funktionalitet är tillgänglig i den lagrade proceduren som möjliggör transaktionshantering. UDF tillåter inte heller användning av tabellvariabler och det tillåter inte heller tillfälliga tabeller. Lagrad procedur tillåter emellertid användningen av tabellvariabler samt en tillfällig tabell i den.

När en funktion tillåter UDF inte att lagrade tabeller ska ringas från den. Det här är helt annorlunda när det gäller lagrad procedur, vilket gör att funktionen kan ringas utan begränsning. När med funktioner tillåter UDF inte att nämnda funktioner ska hämtas från ett vald uttalande. Lagrad procedur innehåller också att procedurer inte kan ringas från var / välj och har uttalanden. Exec eller Execute kan dock användas för att ringa eller ens exekvera den lagrade proceduren. Sist men inte minst är att UDF kan användas för att skapa en medlemsklausul och utnyttja resultatuppsättningen. I lagrad procedur är detta inte möjligt eftersom inga förfaranden är tillåtna i en anslutningsklausul. Det är också viktigt att notera att lagrad procedur möjliggör återgång till noll eller jämn n-värden, medan UDF endast kan återgå till ett specifikt och förinställt värde som är förinställt.

Sammanfattning

Det är obligatoriskt för funktionen att returnera ett värde medan det inte är för lagrad procedur.

Välj uttalanden som endast accepteras i UDF medan DML-uppgifter inte är nödvändiga.

Lagrad procedur accepterar eventuella uttalanden såväl som DML-uttalanden.

UDF tillåter endast ingångar och inte utgångar.

Lagrad procedur möjliggör både ingångar och utgångar.

Fångstblock kan inte användas i UDF men kan användas i lagrad procedur.

Inga transaktioner tillåtna i funktioner i UDF men i lagrad procedur är de tillåtna.

Endast tabellvariabler kan användas i UDF och inte tillfälliga tabeller.

Lagrad procedur möjliggör både tabellvariabler och temporära tabeller.

UDF låter inte lagrade procedurer ringas från funktioner medan lagrade procedurer tillåter uppringning av funktioner.

UDF används i anslutningsklausulen, medan lagrade procedurer inte kan användas i anslutningsklausulen.

Lagrad procedur tillåter alltid att återgå till noll. UDF, tvärtom, har värden som måste återgå till en förutbestämd punkt.