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