Dynamic SQL queries allow users to create statements on the fly using parameters or variables. The EXECUTE (EXEC) statement is used to implement dynamic SQL solutions in the stored procedure. The statement takes both character strings and variables as parameter. In addition, users can use multiple variables to concatenate together and produce a single statement.
For example, to get all of the records from a movies table, you would normally first use a static SQL:
CREATE PROC [my_movies]ASSELECT * FROM moviesCREATE PROC [my_movies]ASEXEC('SELECT * FROM movies')
However, the above statements could be replaced by stored procedures which use dynamic SQL:
CREATE PROC [my_movies]ASDECLARE @sqlString varchar(100)SET @sqlString = 'SELECT * FROM movies'EXEC(@sqlString)CREATE PROC [my_movies]ASDECLARE @sqlString1 varchar(100)DECLARE @sqlString2 varchar(100)SET @sqlString1 = 'SELECT * FROM 'SET @sqlString2 = 'movies'EXEC(@sqlString1 + @sqlString2)
Dynamic SQL queries are useful in many situations, but remember the SQL Query analyzer does not always optimize them. That’s why you should use them only when it’s required.