如何使用存储过程在while循环中递增多个值?

时间:2013-04-11 09:46:44

标签: sql loops stored-procedures

我是SQL的新手,但这是我到目前为止所做的:

Alter Procedure GetallSchedule(@ScreenKey INT,@ShowNo INT) As
BEGIN
--DECLARE @ScreenKey INT
--DECLARE @ShowNo INT
--Declare @j INT
--Declare @i INT

Insert into Schedule(Cineplex,
ScreenKey,ShowOrder,ShowNo,FilmKey,ShowDate,ShowTime)
Values (1,@ScreenKey,1,@ShowNo,100,GETDATE(),GETDATE())

SET @ShowNo = 1
SET @ScreenKey = 1
WHILE (@ScreenKey <=20)
  BEGIN
    WHILE (@ShowNo <=7)
      BEGIN
         Insert into Schedule(
             Cineplex,
             ScreenKey,ShowOrder,ShowNo,FilmKey,ShowDate,ShowTime)
           Values (1,@ScreenKey,1,@ShowNo,100,GETDATE(),GETDATE())
         SET @ShowNo = @ShowNo + 1
      END
    SET @ScreenKey = @ScreenKey + 1
  END

END

go

--Execute GetallSchedule 'TUC'

在这里,我需要插入递增ScreenkeyShowNo的值。我需要获得20个屏幕的结果,每个7个节目

1 个答案:

答案 0 :(得分:0)

在每次运行内部While循环之前,您的ShowNo变量需要重置为1。向下移动一行...

SET @ScreenKey = 1
WHILE (@ScreenKey <=20)
  BEGIN
    SET @ShowNo = 1  -- this one -- reset to 1 before using in loop
    WHILE (@ShowNo <=7)
      BEGIN
         Insert into Schedule....

正如你所拥有的那样,变量最终仅在其范围内循环一次,并且再也没有机会再次完成它的工作。