Dynamic SQL - sp_executesql

by Vishal 10. July 2008 01:54

There are times when you just can’t avoid using dynamic SQL. Usually this is happens when you end up working with a poorly designed database backend. All developers have done it at some point of time and creation and execution of dynamic sql through business code is commonly seen. In TSQL, I’ve also seen many using the EXEC command to execute the dynamic sql. TOday, I found something I didn’t know about which is sp_executesql.

 sp_executesql came in SQL server 7 . You can use it not only to execute dynamic sql but what makes it great is that you can pass to your dynamic sql, parameters and yes… a parameter may be an out parameter!

 syntax: sp_executesql @stmt, @params, [@paramvalue1, @paramvalue2…]

Crude example:

DECLARE @TblName varchar(50)
DECLARE @ColValue int
set @ColValue=30 
set @tblName='MyTable'
sp_executesql 'Select * from ' + @MyTable +' where somecol = @ColVal' , '@ColVal int', @ColValue

Crude example with an out parameter:

DECLARE @TblName varchar(50)
DECLARE @ColValue int
DECLARE @CountReturned int
set @ColValue=30 
set @tblName='MyTable'
sp_executesql 'Select @Count = count (*) from ' + @MyTable +' where somecol = @ColVal' , '@ColVal int, @Count int out', @ColValue, @Count=@CountReturned output

Here is a great article on dynamic SQL :http://www.sommarskog.se/dynamic_sql.html



Comments (4) -

Josh United Kingdom
4/15/2011 10:17:32 AM #

I wrote about this a while ago, sp_executesql can be such a handy stored procedure when you want to set a variable - www.geakeit.co.uk/.../

SQL geek
SQL geek Poland
2/23/2012 5:46:32 AM #

We should use dynamic SQL carefully - there are some risks associated with it: SQL injection. The example we can see here http://www.youtube.com/watch?v=jS3kpNavKM8

Nebojsa Gojnic
Nebojsa Gojnic United States
3/21/2012 12:39:44 AM #

Incorrect syntax near 'sp_executesql' is all I can get from both examples

Mihir Mukerji
Mihir Mukerji New Zealand
12/16/2012 10:27:11 AM #

@Nebojsa, that's because there needs to be an 'EXECUTE' or 'EXEC' command before the 'sp_executesql'

Add comment

  Country flag
  • Comment
  • Preview

Repliques Montres haute qualite vous aider a economiser beaucoup tout en appreciant la valeur du nom de marque. Vous voulez avoir cette montre luxe haut de gamme suisses sur votre main, mais replica uhren l'achat d'une voiture semble une meilleure option. Oui, c'est la realite. Ces montres symbole de statut social co?tent quelque chose replicas de relojes qui est au-dela pour permettre pour une personne normale. Mais ne desesperez hublot replique montres pas si vous ne pouvez pas vous permettre d'acheter ces montres de luxe. Vous avez une belle occasion d'acheter des montres de prestige nom Replique de la marque. Certaines personnes aiment l'aspect d'un veritable montres au poignet, ou replique rolex montres voulez juste nombreuses montres de marque pour correspondre a leur habillement, mais evitez patek philippe replica orologi de depenser des milliers de dollars que une vraie montre mai cots, ils se tournent vers les replique montre montres bonne replique. Si vous ne voulez pas acheter des montres de veritables montres de haute qualite puis de replicas sont votre choix ideal.