Ser ingen anledning att använda dynamisk SQL här. När du gör behöver använda dynamisk SQL bör du överväga sp_executesql
högre i preferens än EXEC()
. Det finns en mängd olika anledningar, inklusive:
-
sp_executesql
är mer benägna att återanvända frågeplaner (se Dynamisk SQL - EXEC(@SQL) kontra EXEC SP_EXECUTESQL(@SQL) ); -
det är mycket lättare att skicka in starkt skrivna parametrar till
sp_executesql
(motverka SQL-injektion bättre än att sammanfoga en sträng); och, -
du kan också hämta variabler från det dynamiska SQL-omfånget tillbaka till det anropande omfånget, till exempel:
Det är inte ett särskilt användbart exempel, men det är ett vanligt problem när man kör dynamiska strängar. Men mer till saken, du bör bara överväga dynamisk SQL när du måste, inte som en första utväg.