当前位置: 代码迷 >> Sql Server >> 游标取不到数据,该如何处理
  详细解决方案

游标取不到数据,该如何处理

热度:25   发布时间:2016-04-24 09:12:54.0
游标取不到数据
本帖最后由 u010218033 于 2015-04-13 14:56:03 编辑
代码如下(实现源表和目标表的按表编号进行拷贝)

declare @sql nvarchar(100)
declare @TableNo int 
declare @srvTableName varchar(100)
declare @DstTableName varchar(100)
set @srvTableName = 'tb_1'
set @DstTableName = 'tmp_sp_1'
set @sql = 'declare c_tmp cursor for' + CHAR(13)
set @sql = @sql + ' select distinct TableNo from ' + @SrvTableName
exec sp_executesql @sql
open c_tmp
Fetch next from c_tmp into @TableNo
while(@@FETCH_STATUS = 0)
begin
exec ('select * into ' + @DstTableName + 'from' + @SrvTableName + 'where TableNo = ' + @TableNo) 
Fetch next from c_tmp into @TableNo
end
close c_tmp
deallocate c_tmp

调试后发现,循环一直进不去,不知道是什么原因,希望大神们搭救
------解决思路----------------------
测试下来,游标生效的,估计是你的exec ('select * into ' + @DstTableName + 'from' + @SrvTableName + 'where TableNo = ' + @TableNo) 这句话有问题导致的
------解决思路----------------------
select * into tmp_sp_1 from ...

只有在表tmp_sp_1不存在时才创建新表并插入数据,假如tmp_sp_1已存在就报错。
应该在循环外创建表,循环中用
INSERT INTO tmp_sp_1 select * from ...

  相关解决方案