sql >> Databáze >  >> RDS >> Sqlserver

SQL Server používá EXEC/sp_executesql nebo jen obyčejný SQL v uložené proceduře?

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ě:

  1. sp_executesql je pravděpodobnější, že znovu použije plány dotazů (viz Dynamické SQL - EXEC(@SQL) versus EXEC SP_EXECUTESQL(@SQL) );

  2. 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

  3. 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.




  1. Přístup k MYSQL odepřen pro uživatele 'root'@'localhost'

  2. Alternativa pro operátor MAX na bitových polích

  3. PHP/MySQL:Kombinovat UPDATE dotazy?

  4. Měl bych uložit cenu jako desítkové nebo celé číslo v Mysql?