declare @id int
declare @date datetime
declare @save numeric(15,7)
declare @rate numeric(15,7)select @date = convert(varchar(10),getdate(),120)
select @rate = time_deposit from time_deposit_rate where state = 1
print @rate--定义游标
declare id_cursor insensitive cursor forselect  id from time_deposit_record where one_year = @date
open id_cursor
fetch next from id_cursor
while @@fetch_status = 0
Beginselect @save = isnull(w_save*@rate*365,0)+w_save from time_deposit_record where id =@id
insert into test (w_save,out) values (@save,@id)
fetch next from id_cursor into @idend
close id_cursor
deallocate id_cursor数据表time_deposit_record 中有三条记录是满足条件的,插入test的时候插入的是3条,但是有两条记录是重复的,
总是time_deposit_record 表中的第一条语句插不进,为什么?
fetch next 放在前面会产生一条空记录

解决方案 »

  1.   

    错fetch放后面产生一条空记录
      

  2.   

    fetch next from id_cursor into @id 
    while @@fetch_status = 0 
    Begin 
    select @save = isnull(w_save*@rate*365,0)+w_save from time_deposit_record where id =@id 
    insert into test (w_save,out) values (@save,@id) 
    fetch next from id_cursor into @id 
    end 
      

  3.   

    fetch next from id_cursor 
    while @@fetch_status = 0 
    Begin
    select @save = isnull(w_save*@rate*365,0)+w_save from time_deposit_record where id =@id 
    --第一次循环时@id没有被赋值