2013-10-01 6 views
0

커서를 검색 할 수있는 옵션이 있습니까?
예 : 행 번호와 값을 가진 테이블 (MyTable)
다른 테이블 (TestTable)에 복사하려는 경우 (
) 값이 5보다 크면 다음 값 내가 복사 할
는해야 < = 3
나는 이런 식으로 뭔가를 사용할 수 있습니다fetch next와 커서 위치

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 
작동하지만 내 질문은 것

가 : 커서
내부 검색하기 위해 어떤 방법이 다음 대가로 < = 3 번 트리거 = 1, 매번 다음 행을 계속 가져 오는 대신
?

+2

종종 세트 기반 방법으로 트리거를 다시 쓸 수 있습니다. 네가 무엇을 성취하려고하는지 정확하게 말한다면 아마도 다른 방식으로 제공 될 수있다. – gvee

+0

예 세트 기반 메소드가 대부분의 경우에 바람직 할 수 있다는 것을 알고 있지만이 세트에서 세트 기반 메소드를 사용할 수 없다고 생각합니다. 지금 바로 다음 반복 값을 검색하기 위해 반복 솔루션을 사용하고 있습니다. 내 기본 테이블에, 그리고 커서에 몇 가지 고급 옵션이있을 때마다 다음 행으로 이동하지 궁금하네요. 물론 그 쿼리에 대해 집합 기반 솔루션을 생각할 수 있다면 가장 좋을 것입니다. –

+0

"다음 적합한 값"은 어떻게 정의합니까? – gvee

답변

1

아니오, 커서는 사용자가 수행 한 쿼리의 종류를 지원하지 않습니다. 각 값을 방문하여 루프에서 확인해야합니다.

+0

감사합니다. quess 나는 그것을 듣기를 기대하고있었습니다. –