вопрос базы данных - PullRequest
       2

вопрос базы данных

2 голосов
/ 24 августа 2010

Я написал ниже курсор:

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) в блоке begin-end? Есть ли лучший способ сделать это? (я использую SQL Server 2008)

Ответы [ 2 ]

1 голос
/ 24 августа 2010

Возможно, самый простой способ, как вы предлагаете.

В качестве альтернативы можно добавить его к выражению select следующим образом

select ROW_NUMBER() over (order by (select 0)) As Rownumber,
    productID, productName from products
0 голосов
/ 24 августа 2010

Хорошо бы увеличить локальную переменную.

Другой вариант - использовать в вашем SELECT функцию ранжирования ROW_NUMBER () .Как то так:

select productID, productName
     , ROW_NUMBER() OVER(ORDER BY productID) AS rownum 
  from products
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...