문제

이러한 장면을 상상해 보십시오,당신이 일부를 업데이트 레거시 Sybase 코드에 걸쳐 올 커서입니다.저장 프로시저를 구축한 결과에서 설정#임시 테이블이있는 모든 준비가되어 반환할 것을 제외하고는 하나의 열지 않는 정말 사람이 읽을 수 있는,그것은 영숫자 코드입니다.

우리에게 무엇이 필요하지 가능한 뚜렷한 값이 이 코드를 호출,다른 저장 프로시저를 이러한 은밀한 값을 업데이트 및 결과 집으로 새롭게 해독 값:

declare c_lookup_codes for
select distinct lookup_code
from #workinprogress

while(1=1)
begin
    fetch c_lookup_codes into @lookup_code

    if @@sqlstatus<>0
    begin
        break
    end

    exec proc_code_xref @lookup_code @xref_code OUTPUT

    update #workinprogress
    set xref = @xref_code
    where lookup_code = @lookup_code
end

지금 그는 동안,이 줄 수 있습니다 어떤 사람이 두근 두근,작동지 않습니다.나의 질문은 어떻게 최고의 것을 하나의 이런 종류의 것은?

_NB:에 대한 목적으로 이 예제의할 수도 있습니다 상상하는 결과가 세트의 지역에서 500k 행하고 있다는 것을 100 고유한 값의 look_up_code 그리고 마지막으로,그것은 있을 수 없는 테이블과 외부 참조에서 값으로 논리에 proc_code_xref 이 너무 비전._

도움이 되었습니까?

해결책

당신이 외부 참조하려면 테이블을 꺼내 커서입니다.잘 보고 100 뚜렷한 값을 조회(그리고 그들은 정체되는)그것은 간단하를 생성 중 하나를 호출하여 proc_code_xref100 시간 및 삽입하는 결과를 테이블

다른 팁

지 않는 한 당신은 기꺼이 중복되는 코드에서 외부 참조 proc,는 방법은 없을 커서를 사용하지 마십시오.

그들이 말하는 사용해야 하는 경우 커서,그 후,당신은 당신이 있어야 할 뭔가 잘못;-)여기지 않고 솔루션 cursor:

declare @lookup_code char(8)

select distinct lookup_code
into #lookup_codes
from #workinprogress

while 1=1
begin
    select @lookup_code = lookup_code from #lookup_codes

    if @@rowcount = 0 break

    exec proc_code_xref @lookup_code @xref_code OUTPUT

    delete #lookup_codes
    where lookup_code = @lookup_code
end
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top