1

ストアド プロシージャ内のループでローカル変数の値をインクリメントする方法

ALTER PROC [dbo].[Usp_SelectQuestion]
@NoOfQuestion int
AS
BEGIN
Declare @CNT int
Declare @test int
Declare @x int
Declare @y int
set @x = 1;
set @y = 1; 
Select @CNT=(Select Count(*) from (select Distinct(setno)from onlin) AS A)
select @test=@NoOfQuestion/@CNT
while @x <= @CNT do 
    while @y <= @test
        select  * from onlin where setno = @x
        set @y = @y +1
    set @x =@x + 1 
END

のような値が増加@x@yず、無限ループに陥っています。

4

1 に答える 1

3

while-body を begin-end ブロックで囲む必要があります。

while @x <= @CNT do begin
  while @y <= @test begin
    select  * from onlin where setno = @x
    set @y = @y + 1
  end
set @x =@x + 1
end

あなたが達成しようとしていることを理解していません(いくつかの変数を増やしたいという事実に加えて)

于 2012-12-19T07:35:41.330 に答える