use test
create trigger mkolp
on TB_DataPlat for insert 
as
declare @DATA varchar(50)
declare @PFKID1   char(50)
declare @DataID1  varchar(50)declare qq_cursor cursor forselect PFKID,DataID,data from TB_DataPlat
open qq_cursor
fetch next from qq_cursor
into @PFKID1,@DataID1,@datadeclare @craftid char(20),@PFKID varchar,@DataID varchar, @data1 varchar(20)declare ww_cursor cursor for
select craftid,PFKID,DataID,data1 from pp_craftProperty
open ww_cursor
fetch next from ww_cursor
into @craftid,@PFKID,@DataID,@data1while @@fetch_STATUS=0
begin
   if  @PFKID=@PFKID1
begin
update pp_craftdataProperty  set DataPFKID=@PFKID where craftid=@craftid
end
   if @DataID=@DataID1
begin
update pp_craftdataProperty  set DataPlatID=@DataID where craftid=@craftid
end
   if @data=@data1
begin
update pp_craftdataProperty  set data=@data where craftid=@craftid
end
fetch next from ww_cursor
into @craftid,@PFKID,@DataID,@data1
end
close qq_cursor 
deallocate qq_cursorclose ww_cursor 
deallocate ww_cursor
go我想 while 循环根据我传入的值循环,如果我传入 一个值 就循环一次传两个 就循环两次........
现在的情况是我传入  每个字段的第一个数据时执行 第二个数据和以后就不执行了   ,这个系统变量 @@fetch_STATUS=0 可能有错误怎么改呀sql数据go

解决方案 »

  1.   

    双层游标循环,为什么把内层变量名称声明的跟外层相同的呢?换成不同的名称试试declare @DATA varchar(50)
    declare @PFKID1   char(50)
    declare @DataID1  varchar(50)…………
    declare @craftid char(20),@PFKID varchar,@DataID varchar, @data1 varchar(20)
      

  2.   

    第一次定义游标取了值,但没有循环.这里就有问题了,其实不需要定义游标取值,用一个select语句就可以了
    还有为何要定义变量两次一样?使用游标速度慢,建议你不要使用游标