2012-12-19 60 views
0

內的值如何增加局部變量的值在循環中的存儲過程如何增加存儲過程

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 @[email protected]/@CNT 
while @x <= @CNT do 
    while @y <= @test 
     select * from onlin where setno = @x 
     set @y = @y +1 
    set @x [email protected] + 1 
END 

@x@y值不增加內部和我被困在一個無限循環。

+0

*** *** SQL只是*結構化查詢語言*什麼 - 語言許多數據庫系統使用,但不是一個數據庫產品...很多東西都是特定於供應商的 - 所以我們真的需要知道您使用的數據庫系統**(以及哪個版本)...... –

+0

它是MSSQL我想 – alzaimar

+0

@marc_s - 我猜OP正在使用T-SQL(MS Sql Server)。 'set @x = @ x1 + 1'絕對可以 - 它應該做他想做的事。但是這兩個「while」循環看起來不正確。 – paulsm4

回答

3

您必須將while-body包含在開始塊中。

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

我不明白你正在嘗試才達到(除了要增加一些變量的事實)

+0

謝謝,但我仍然無限循環。 – Prathiesh

+0

我有一個表,它包含像列(questionid,questionsetno,規模,問題),如果有人給總數沒有問題是50,假設我有5套問題紙(questionsetno),所以我想從每套10問題隨機 – Prathiesh

+0

然後查找一個解決方案;-) http://stackoverflow.com/questions/848872/select-n-random-rows-from-sql-server-table – alzaimar