Zie hier geen reden om dynamische SQL te gebruiken. Wanneer je doe dynamische SQL moet gebruiken, moet u overwegen sp_executesql
hoger in voorkeur dan EXEC()
. Er zijn verschillende redenen, waaronder:
-
sp_executesql
heeft meer kans om queryplannen opnieuw te gebruiken (zie Dynamische SQL - EXEC(@SQL) versus EXEC SP_EXECUTESQL(@SQL) ); -
het is veel gemakkelijker om sterk getypte parameters door te geven aan
sp_executesql
(het dwarsbomen van SQL-injectie beter dan het aaneenschakelen van een string); en, -
u kunt ook variabelen van binnen het dynamische SQL-bereik terugkrijgen naar het aanroepende bereik, bijvoorbeeld:
Dat is geen erg handig voorbeeld, maar het is een veelvoorkomend probleem bij het uitvoeren van dynamische strings. Maar meer ter zake, je zou dynamische SQL alleen moeten overwegen als het moet, niet als eerste redmiddel.