例:declare @sql varchar(2000) set @sql='select * from tdictuser where userid=''1001''' exec(@sql)注意:where userid=''1001''是两个单撇号
declare @sql varchar(1000),@expression varchar(100) set @expression='where fieldname=''asdfasdf''' set @sql='select * from atable' + @expression exec(@sql)
那么在游标中能实现吗?? 以下代码中第三行的条件怎样根据传入参数的不同而改变呢???declare @Fieldvalue varchar(20),@WhereCase Nvarchar(500)declare CountCur scroll cursor for select Field from ATable open CountCur fetch next from CountCur into @FieldvalueWHILE @@FETCH_STATUS=0 BEGIN print @Fieldvalue fetch next from CountCur into @Fieldvalue END close CountCur deallocate CountCur
首先,建议不要用游标 其次,建议不要用exec @string_variable ,这个需要额外的的校验,不然不保险。至于你的问题,可以这样做 建一个临时表, 把你传入的内容拼成的语句 select * from atable where fieldname='asdfasdf' 的结果保存到临时表, 再创建游标,是针对临时表的全部记录了,不需要外面传入的条件了。
set @sql='select * from tdictuser where userid=''1001'''
exec(@sql)注意:where userid=''1001''是两个单撇号
set @expression='where fieldname=''asdfasdf'''
set @sql='select * from atable' + @expression
exec(@sql)
以下代码中第三行的条件怎样根据传入参数的不同而改变呢???declare @Fieldvalue varchar(20),@WhereCase Nvarchar(500)declare CountCur scroll cursor
for select Field from ATable
open CountCur
fetch next from CountCur into @FieldvalueWHILE @@FETCH_STATUS=0
BEGIN
print @Fieldvalue
fetch next from CountCur into @Fieldvalue
END
close CountCur
deallocate CountCur
其次,建议不要用exec @string_variable ,这个需要额外的的校验,不然不保险。至于你的问题,可以这样做
建一个临时表,
把你传入的内容拼成的语句 select * from atable where fieldname='asdfasdf' 的结果保存到临时表,
再创建游标,是针对临时表的全部记录了,不需要外面传入的条件了。