关于游标

PS:面试过程中常遇到游标,触发器的问题,但一直没了解透,工作中也鲜少遇到,遇到问题也不会想到用游标,触发器来解决问题,

    但是在这个项目中,却帮了我大忙,今天遇到一个问题,最后同事用游标帮我解决了,先把code记下来,最起码涉及到游标的用法


 DECLARE--声明游标
 @MyCursor CURSOR,--游标名称
  @ProductLineId uniqueidentifier, --产品线ID
  @ProductID uniqueidentifier;      --产品ID
 BEGIN

    --获取产品ID
     SET @MyCursor=CURSOR FOR SELECT ProductLineID FROM dbo.T_Sys_ProductLine WHERE ParentID IS NOT NULL
     OPEN @MyCursor--打开游标
     FETCH FROM @MyCursor INTO @ProductID;
     WHILE (@@FETCH_STATUS =0)
     BEGIN  

      --获取产品线ID
     SET @ProductLineID=(SELECT ParentID FROM dbo.T_Sys_ProductLine where ProductLineID =@ProductID)

     --新增数据到表中
     insert into T_Op_Offering(ID,OfferingName,CreateUser, CreateTime,DeviceSetQty,ClassID,Status,Flag,DomainID,TempType,Remarks,ProductLineID,ProductID)
     values(NEWID(),'OfferingTempName'+CONVERT(varchar(6),@@FETCH_STATUS),'20130114-1158-5392-D233-D50C93857D76', GETDATE(),0,NEWID(),0,1,'00000000-0000-0000-0000-000000000001',2,N'压力测试实验模板',@ProductLineId,@ProductID)
     FETCH FROM @MyCursor INTO @ProductID;--类似i++
     END
     CLOSE @MyCursor;--关闭游标
     DEALLOCATE @MyCursor--释放游标
 END

原文地址:https://www.cnblogs.com/sunny0515/p/3240990.html