Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server използва EXEC/sp_executesql или просто обикновен sql в съхранена процедура?

Не виждате причина да използвате динамичен SQL тук. Когато направите трябва да използвате динамичен SQL, трябва да помислите за sp_executesql с по-високо предпочитание от EXEC() . Има различни причини, включително:

  1. sp_executesql е по-вероятно да използва повторно планове за заявки (вижте Dynamic SQL - EXEC(@SQL) срещу EXEC SP_EXECUTESQL(@SQL) );

  2. много по-лесно е да подадете строго типизирани параметри в sp_executesql (осуетяване на SQL инжектиране по-добре от конкатениране на низ); и,

  3. можете също така да получите променливи от динамичния SQL обхват обратно към извикващия обхват, например:

Това не е много полезен пример, но е често срещан проблем при изпълнение на динамични низове. Но по-важното е, че трябва да обмисляте динамичен SQL само когато трябва, а не като първо средство.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Активиране на поща от база данни в SQL Server (T-SQL)

  2. Трансформирайте вертикален резултат в хоризонтален режим (T-SQL)

  3. Ограничение на клаузата IN в Sql Server

  4. Използване на пълнотекстово търсене в SQL Server 2008 в множество таблици, колони

  5. Как да добавите празни редове, когато изберете заявка sql