数据库问题

时间:2010-08-24 11:48:41

标签: tsql sql-server-2008 cursor

我写了吼光标:

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的列,它在执行游标时显示每一行的数量。我应该在开始端块中声明另一个等于1的varriabl并加上1(+1)吗?有没有更好的方法呢? (我使用的是sql server 2008)

2 个答案:

答案 0 :(得分:1)

最简单的方法可能就像你建议的那样。

另一种方法是将其添加到select语句中,如下所示

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

答案 1 :(得分:0)

增加局部变量就可以了。

另一种选择是在SELECT中使用ROW_NUMBER() ranking function。像这样:

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