1 、普通SQL语句可以用Exec执行 yXp7C'(
@lq^GARP*
1 、普通SQL语句可以用Exec执行 yXp7C'(
@lq^GARP*
eg: Select * from tableName *&;o Tj
Exec('select * from tableName') /;1oFy:
Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N HNu{7-@ 1
fT E#
2、字段名,表名,数据库名之类作为变量时,必须用动态SQL F=6lGI t
$v RIx``2
eg: N(i[}3| x
declare @fname varchar(20) s|J~o#x?
set @fname = 'FiledName' sa?Cv
Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。 p !KlG5
Exec('select ' + @fname + ' from tableName') -- 请注意 加号前后的 单引号的边上加空格 [ kGB}
7Wz|i?@&
当然将字符串改成变量的形式也可 9jSOKYm~ m
declare @fname varchar(20) 9V4HnJ\bb
set @fname = 'FiledName' --设置字段名 "!sK 9_&7
^v(h f
declare @s varchar(1000) [29+#q&
set @s = 'select ' + @fname + ' from tableName' \ s?q~X<X5
Exec(@s) -- 成功 4%ISg2}Y
exec sp_executesql @s -- 此句会报错 j,wqrK|0i
bW_CFC[
/ht!m`P
declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000) L6Wb.v(u
set @s = 'select ' + @fname + ' from tableName' C ITW1 <
Exec(@s) -- 成功 ?<}_xw0I
exec sp_executesql @s -- 此句正确 Dz-WJaoaH@
+lid%<q{49
3、输出参数 r&k\2>)
P:!C2-phk
declare @num int, W4ey9G
@sqls nvarchar(4000) | _h{
set @sqls='select count(*) from tableName' 3ud*Dj8V
exec(@sqls) r . m%z
--如何将exec执行结果放入变量中? G @y_5X&
L%y8:D|
declare @num int, Td4'%H%hO
@sqls nvarchar(4000) Tj zX8oF
set @sqls='select @a=count(*) from tableName ' [+m}E/$
exec sp_executesql @sqls,N'@a int output',@num output &8(rj>
select @num k|z9V"`%
>X$rH%K
此外,如果想要在SQL语句 字符串中使用 单引号 '' 可以 使用 ''''