存储过程

 ALTER PROCEDURE dbo.sp_PaperLibrary_GenPaperLib
(
 @PaperID  int,
 @ForTK   int,
 @SubclassID  int,
 @Numbers  int
)
AS
BEGIN
 DECLARE @QuestionID int
 DECLARE @IsMain int
 DECLARE @MainID int
 DECLARE @Count  int
 
 DELETE dbo.PaperLibrary_Question
  WHERE PaperID = @PaperID AND SubclassID = @SubclassID

 DECLARE cursor_MainID CURSOR  FOR
  SELECT ID
   FROM Questions
   WHERE ForTK = @ForTK AND Useable = 1 AND SubclassID = @SubclassID AND IsMain = 1
   ORDER BY NEWID()
 OPEN cursor_MainID
 
 SET @Count = 0

 Fetch Next From cursor_MainID Into @MainID
 WHILE   @@FETCH_STATUS = 0 
 BEGIN
  IF @Count < @Numbers
  BEGIN  
   DECLARE cursor_QC CURSOR  FOR
    SELECT Questions.ID, Questions.SubclassID, Questions.IsMain, Questions.MainID
         FROM Questions
         WHERE Questions.MainID = @MainID OR Questions.ID = @MainID
   OPEN cursor_QC
   Fetch Next From cursor_QC Into @QuestionID, @SubclassID, @IsMain, @MainID

   WHILE   @@FETCH_STATUS = 0 
   BEGIN
    INSERT INTO dbo.PaperLibrary_Question
     (PaperID, QuestionID, SubclassID, IsMain, MainID)
    VALUES
     (@PaperID, @QuestionID, @SubclassID, @IsMain, @MainID)
    
    Fetch Next From cursor_QC Into @QuestionID, @SubclassID, @IsMain, @MainID
   END
 
   CLOSE cursor_QC 
   DEALLOCATE cursor_QC

   SET @Count = @Count + 1
  END
  ELSE
  BEGIN
   BREAK;
  END
  Fetch Next From cursor_MainID Into @MainID
 END
 
 CLOSE cursor_MainID 
 DEALLOCATE cursor_MainID
  
END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值