在定义游标时我们有时候会需要使用动态Sql语句,下面通过例子展示错误和正确的写法
错误的写法:
Code
declare @sql nvarchar(4000)
declare @i int=1
while @i<10
begin
set @sql='select * from #tmp where sortId='+@i
set @i=@i+1
declare t_cur cursor for exec @sql
open t_cur
end
正确的写法:
Code
declare @sql nvarchar(4000)
declare @i int=1
while @i<10
begin
set @sql='declare t_cur cursor for select * from #tmp where sortId='+@i
set @i=@i+1
exec @sql
open t_cur
end
这样比较一下两种写法应该就可以想明白为什么了