---游标循环遍历--
BEGIN
DECLARE @PARTSFAULT_ID INT,@DutyFactory NVARCHAR(50),@PARTSFAULT_RESPONSESEC NVARCHAR(50),@ParentID int
declare @a int,@error int
declare @temp varchar(50)
set @a=1
set @error=0
--申明游标为Uid
declare order_cursor cursor
for (select PARTSFAULT_ID from QMS_PARTSFAULT )
--打开游标--
open order_cursor
--开始循环游标变量--
fetch next from order_cursor into @temp
while @@FETCH_STATUS = 0 --返回被 FETCH语句执行的最后游标的状态--
begin
SET @ParentID=0;
SET @DutyFactory='';
SELECT @PARTSFAULT_ID=PARTSFAULT_ID,@PARTSFAULT_RESPONSESEC=PARTSFAULT_RESPONSESEC FROM QMS_PARTSFAULT WHERE PARTSFAULT_ID=@temp
--获取一级责任部门信息
SELECT TOP 1 @ParentID=ID FROM dbo.QMS_PARTSFAULT_DEPARTMENT WHERE PARTSFAULT_ID=@PARTSFAULT_ID AND PARENT_ID=0
--获取对应的二级责任部门数据
select @DutyFactory=Response_Dept from qms.dbo.QMS_PartsFault_Response WHERE Response_PartsfaultID=@PARTSFAULT_ID
IF @ParentID<>0 AND @DutyFactory<>''
BEGIN
INSERT INTO dbo.QMS_PARTSFAULT_DEPARTMENT ( PARTSFAULT_ID, PARENT_ID, LEVEL,
DutyFactory )
VALUES ( @PARTSFAULT_ID, -- PARTSFAULT_ID - int
@ParentID, -- PARENT_ID - int
2, -- LEVEL - int
@DutyFactory -- DutyFactory - nvarchar(200)
)
END
INSERT INTO dbo.QMS_PARTSFAULT_WORKSHOP ( PARTSFAULT_ID, Assembly_Line,
WORKSHOP_NAME )
VALUES ( @PARTSFAULT_ID, -- PARTSFAULT_ID - int
N'', -- Assembly_Line - nvarchar(200)
@PARTSFAULT_RESPONSESEC -- WORKSHOP_NAME - nvarchar(200)
)
set @a=@a+1
set @error= @error + @@ERROR --记录每次运行sql后是否正确,0正确
fetch next from order_cursor into @temp --转到下一个游标,没有会死循环
end
close order_cursor --关闭游标
deallocate order_cursor --释放游标
--查看结果--
select @a
end
go