Basic Syntax of dynamic SQL statements
1: Common SQL statements can be executed using Exec
Eg: Select * From tablename
Exec ('select * From tablename ')
Exec sp_executesql n 'select * From tablename' -- note that N must be added before the string.
2: when the field name, table name, database name and so on are used as variables, dynamic SQL must be used
Eg:
Declare @ fname varchar (20)
Set @ fname = 'filedname'
Select @ fname from tablename -- error. No error is prompted, but the result is a fixed value of filedname, which is not required.
Exec ('select' + @ fname + 'from tablename') -- Note that spaces are placed on the side of the single quotation mark before and after the plus sign.
Of course, you can also change the string to a variable.
Declare @ fname varchar (20)
Set @ fname = 'filedname' -- set the field name
Declare @ s varchar (1000)
Set @ s = 'select' + @ fname + 'from tablename'
Exec (@ s) -- successful
Exec sp_executesql @ s -- an error is returned when @ s is not of the nvarchar type.
Declare @ s nvarchar (1000) -- Note that this is changed to nvarchar (1000)
Set @ s = 'select' + @ fname + 'from tablename'
Exec (@ s) -- successful
Exec sp_executesql @ s -- this sentence is correct
3. Output Parameters
Declare @ num int,
@ Sqls nvarchar (4000)
Set @ sqls = 'select count (*) from tablename'
Exec (@ sqls)
-- How to put the exec execution result into a variable?
Declare @ num int, @ sqls nvarchar (4000)
Set @ sqls = 'select @ A = count (*) from tablename'
Exec sp_executesql @ sqls, n' @ A int output', @ num output -- defines @ A as the output variable, and @ num gets the variable
Select @ num