Zde nevidíte důvod používat dynamické SQL. Když uděláte potřebujete použít dynamické SQL, měli byste zvážit sp_executesql
vyšší přednost než EXEC()
. Existuje celá řada důvodů, včetně:
-
sp_executesql
je pravděpodobnější, že znovu použije plány dotazů (viz Dynamické SQL - EXEC(@SQL) versus EXEC SP_EXECUTESQL(@SQL) ); -
je mnohem snazší předat silně zadané parametry do
sp_executesql
(zmaření vkládání SQL lepší než zřetězení řetězce); a -
můžete také získat proměnné z dynamického rozsahu SQL zpět do rozsahu volání, například:
To není příliš užitečný příklad, ale je to běžný problém při provádění dynamických řetězců. Ale více k věci, o dynamickém SQL byste měli uvažovat pouze tehdy, když musíte, nikoli jako první možnost.