动态sql语句基本语法

1 :普通SQL语句可以用Exec执行
eg:Select*fromtableName
Exec('select*fromtableName')
Execsp_executesqlN'select*fromtableName'--请注意字符串前一定要加N

2:字段名,表名,数据库名之类作为变量时,必须用动态SQL
eg:
declare@fnamevarchar(20)
set@fname='FiledName'
Select@fnamefromtableName--错误,不会提示错误,但结果为固定值FiledName,并非所要。
Exec('select'+@fname+'fromtableName')--请注意加号前后的单引号的边上加空格

当然将字符串改成变量的形式也可
declare@fnamevarchar(20)
set@fname='FiledName'--设置字段名

declare@svarchar(1000)
set@s='select'+@fname+'fromtableName'
Exec(@s)--成功
execsp_executesql@s--此句会报错


declare@sNvarchar(1000)--注意此处改为nvarchar(1000)
set@s='select'+@fname+'fromtableName'
Exec(@s)--成功
execsp_executesql@s--此句正确

3. 输出参数
declare@numint,
@sqlsnvarchar(4000)
set@sqls='selectcount(*)fromtableName'
exec(@sqls)
--如何将exec执行结果放入变量中?

declare@numint,
@sqlsnvarchar(4000)
set@sqls='select@a=count(*)fromtableName'
execsp_executesql@sqls,N'@aintoutput',@numoutput
select@num

此外,如果想要在SQL语句 字符串中使用单引号'' 可以使用''''
posted @ 2006-07-05 11:30  泡面 @ 幸福  阅读(285)  评论(0)    收藏  举报