0

我希望能够将多行结果集中返回的列的 int 值增加 1。例如,以下查询将从如下所示的表中返回结果集:

select numinbatch from items i where i.ID > @itemID and i.BatchID = @batchID

4
5
6
7

我想通过将它们增加 1 来更新这些值,以便:

5
6
7
8

我现在有以下内容,但我在加号下得到了一条红色的波浪线错误线。

declare @idToIncrement as int
declare cur cursor fast_forward for select numinbatch from items i where i.ID > @itemID and i.BatchID = @batchID

    open cur
    fetch next from cur into @idToIncrement

    while @@FETCH_STATUS = 0
    Begin
    EXEC

    --increment numinbatch or @idToIncrement
    @idToIncrement= @idToIncrement + 1

     fetch next from cur into @field1, @field2
    END

    close cur
    deallocate cur

我知道游标对性能不利,因此如果有人有更好的解决方案,请随时分享。

4

2 回答 2

4

我会这样做:

select numinbatch + 1 numinbatch_increased_by_1
  from items i
 where i.ID > @itemID and i.BatchID = @batchID

如果要将UPDATE值放入表中,则

UPDATE items i
   SET numinbatch = numinbatch + 1
 WHERE i.ID > @itemID AND i.BatchID = @batchID
于 2013-03-28T21:03:21.623 回答
1
SELECT numinbatch + 1 FROM items WHERE ID > @itemID AND BatchID = @batchID

假设 numinbatch 是数字。不需要光标。

于 2013-03-28T21:04:08.997 回答