2010-08-24 112 views
2

我已經寫了波紋管光標:數據庫問題

declare myCursor cursor 
    for select productID, productName from products 
declare @productID int 
declare @productName nvarchar(50) 

    open myCursor 
    fetch next from myCursor into @productID,@productName 
print @productID 
print @productName 
set @productID=0 
    set @productName='' 

    while @@FETCH_STATUS=0 
    begin 
    fetch next from myCursor into @productID,@productName 
    print @productID 
    print @productName 
    set @productID=0 
    set @productName='' 

    end 
close myCursor 
deallocate myCursor 

我希望它有一個名爲RowNomber另一列在執行光標這顯示每行的數量。我是否應該聲明另一個varriabl等於1,並在開始塊中加上1(+1)?有沒有辦法做到這一點? (我正在使用sql server 2008)

+0

順便提一下,如果您將問題的標題標題爲「數據庫問題」,那麼您可能會得到更多的觀點/答案。 – Peter 2010-09-04 14:31:50

回答

1

最簡單的方法可能就像您建議的那樣。

另一種方法是將其添加到select聲明如下

select ROW_NUMBER() over (order by (select 0)) As Rownumber, 
    productID, productName from products 
0

遞增一個局部變量就可以了。

另一種選擇是在您的SELECT中使用ROW_NUMBER() ranking function。像這樣:

select productID, productName 
    , ROW_NUMBER() OVER(ORDER BY productID) AS rownum 
    from products 
+0

這不一定會返回正確的結果。在主查詢中沒有'order by',所以不能保證這些行實際上會按照'productID'的順序返回 – 2010-08-24 12:06:24