使用fetch next和cursor中的where

时间:2013-10-01 14:41:46

标签: sql-server sql-server-2008 tsql sql-server-2012

有没有选择在光标内搜索?
例如:我有一个表(MyTable),其中包含行号和值,
我要复制到另一个表(TestTable),
但是,假设有一个值> = 5,那么下一个值为
我要复制的应该是< = 3.
我可以使用这样的东西:

create table TestTable
(row tinyint,
value tinyint)

declare @row tinyint, @value tinyint, @trigger bit
declare test_cursor cursor fast_forward for
select row,value from MyTable order by row
open test_cursor
fetch next from test_cursor into @row,@value
set @trigger = 0
while @@FETCH_STATUS = 0
    begin
        if @trigger = 0
            begin
                insert into TestTable values (@row,@value)
                if @value >= 5 set @trigger = 1
            end
        else if @value <= 3 
            begin
                insert into TestTable values (@row,@value)
                set @trigger = 0
            end
        fetch next from test_cursor into @row,@value
    end
close test_cursor
deallocate test_cursor  

那会有效,但我的问题是:有没有办法在光标内搜索 对于下一个falue&lt; = 3一旦触发= 1,
而不是每次都反复取出下一行?

1 个答案:

答案 0 :(得分:2)

不,游标不支持你所追求的那种查询。您必须访问每个值并在循环中进行检查。