学习SQL应知道的动态SQL语句基本语法
1 、普通SQL语句可以用Exec执行 o#ym U`|
'\W\8'
eg: Select * from tableName ~&G 4z!
Exec('select * from tableName') ^|..(O
Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N )au.Kc)
S(B~q47Le
2、字段名,表名,数据库名之类作为变量时,必须用动态SQL _w$vrA{
C9~e^+GI
eg: R"|uvbJv
declare @fname varchar(20) {x6?@rn
set @fname = 'FiledName' ^Zior\[Y
Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。 B/?.)Yj/E0
Exec('select ' + @fname + ' from tableName') -- 请注意 加号前后的 单引号的边上加空格 @c v $"L)
9F%+C9R
当然将字符串改成变量的形式也可 )-xV0+rQ
declare @fname varchar(20) s&\Xg=gQ
set @fname = 'FiledName' --设置字段名 PN_6gO"a
GPa_PEt
declare @s varchar(1000) @;6^aM5
set @s = 'select ' + @fname + ' from tableName' '!9w,.&U
Exec(@s) -- 成功 wm9yyxW
exec sp_executesql @s -- 此句会报错 HJ]<u/-#F
<aCyo2t
S NU[BQ
declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000) 0a3"n|r
set @s = 'select ' + @fname + ' from tableName' bI6{v%9)
Exec(@s) -- 成功 2MNg\rbp
exec sp_executesql @s -- 此句正确 ,g hc~8
4w^q!FO
3、输出参数 uC|& [d_u
Mb/yZU3H
declare @num int, SKuS`t]K<e
@sqls nvarchar(4000) 4+@V Ua
set @sqls='select count(*) from tableName' qqJ#"2(=&
exec(@sqls) UAAh,
--如何将exec执行结果放入变量中? :}^%uyEeh(
aP+$(i+
declare @num int, BlH\Q m^V
@sqls nvarchar(4000) =Xl8(X$s4
set @sqls='select @a=count(*) from tableName ' !~ew}gP}
exec sp_executesql @sqls,N'@a int output',@num output ul$(?l
select @num .& bh$0m
y'b"0/
此外,如果想要在SQL语句 字符串中使用 单引号 '' 可以 使用 ''''