| 学习SQL应知道的动态SQL语句基本语法 |
| [ 作者:佚名 转贴自:网络转载 阅读次数:96 更新时间:2007-9-2 12:00:00 录入:刘光勇 ] 热 |
|
|
|
1 、普通SQL语句可以用Exec执行 DlF<RR~ t&urAzu eg: Select * from tableName "i-L ff Exec('select * from tableName') iRw$L Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N Vwepu) tI?;6E^) 2、字段名,表名,数据库名之类作为变量时,必须用动态SQL OY8wB=N Yw"+qsy eg: 0Vn'F:?6 declare @fname varchar(20) M#O6L'R@?8 set @fname = 'FiledName' YB}H]7kN Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。 +h et CZW Exec('select ' + @fname + ' from tableName') -- 请注意 加号前后的 单引号的边上加空格 iH8f I. pbC eqG 当然将字符串改成变量的形式也可 xQ9"{rs declare @fname varchar(20) ]~Y ,QL9` set @fname = 'FiledName' --设置字段名 .BB50hW eQN9B ` declare @s varchar(1000) I ~)U\ set @s = 'select ' + @fname + ' from tableName' 'tFzuHcL Exec(@s) -- 成功 Gm>d0fByL| exec sp_executesql @s -- 此句会报错 4_B$WE=| #rETf% MM 9U142E declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000) 1@ZF}HA1 set @s = 'select ' + @fname + ' from tableName' vZjFOES Exec(@s) -- 成功 U$Jbl= exec sp_executesql @s -- 此句正确 tS A/G\ N)nm5~$N 3、输出参数 j [nM9K 'P[66x declare @num int, kh)v-J_ @sqls nvarchar(4000) e}5W*;eD*X set @sqls='select count(*) from tableName' &SvdEdw>< exec(@sqls) +\}Z) --如何将exec执行结果放入变量中? l{p0:6 twL+xk(C declare @num int, 6JSFFa%s @sqls nvarchar(4000) q/%<R~Ny\ set @sqls='select @a=count(*) from tableName ' {Q'v@): exec sp_executesql @sqls,N'@a int output',@num output g-MR7Gj select @num '}l^+=$c$ ajAiCy 此外,如果想要在SQL语句 字符串中使用 单引号 '' 可以 使用 ''''
|
|
|
|