2011-04-20 3 views
1
UPDATE TABLE SET SOMETHING = 1 WHERE ID IN (SELECT ID FROM STORED_PROCEDURE) 

기록의 엄청난 양 = 저장 프로 시저에서 2100업데이트 곳에 저장 프로 시저 ID - 가져 오기 표에서

기록 = 50

파이어 버드 2.5에 페치의 엄청난 양의 (31M를!) cousing이 문 섬기는 사람. 왜? 그것은 저장 프로 시저에서 id를 먼저 선택해서 where 절에 넣으면 안됩니까? 작동 시키려면 어떻게해야합니까? 이 같은

+0

@JustMe는 : STORED_PROCEDURE은 테이블이나 함수이고, 후자의 경우 데이터베이스 접근의 관점에서 수행 절차는 무엇인가? –

+0

@Bob 그것은 선택 가능한 저장 프로 시저입니다 - 하나는 "select"이고, 보조는 – JustMe

+0

입니다. @JustMe : OK - 저장 프로 시저가 데이터베이스 액세스와 관련하여 무엇을합니까? –

답변

1

시도 뭔가 :

declare variable myid integer;  
begin 
    for 
     select id from stored_procedure into :myID 
    do begin 
     update table set something = 1 where table.id = :myID; 
    end 
end 
+0

예, 너무 많은 페치를 방지합니다. – JustMe