2010-03-17 3 views

답변

4

당신이하고 싶은 것이 나던 것이 좋을 것입니다. 그리고 어쩌면 당신은 그 두 개의 procs를 재 설계하는 것에 대해 생각해야합니다. 그러나 빠른 수정으로 다음과 같이 할 수 있습니다.

중간 결과를 임시 테이블에 작성하여 sp1 내부에서 액세스/처리 할 수 ​​있습니다. 그런 다음 sp1이 반환하면 sp2에서 만든 임시 테이블을 삭제할 수 있습니다.

http://pastie.org/883881

delimiter ; 
drop procedure if exists foo; 
delimiter # 

create procedure foo() 
begin 

    create temporary table tmp_users select * from users; 

    -- do stuff with tmp_users 

    call bar(); 

    drop temporary table if exists tmp_users; 

end # 

delimiter ; 

drop procedure if exists bar; 

delimiter # 

create procedure bar() 
begin 
    -- do more stuff with tmp_users 
    select * from tmp_users; 
end # 

delimiter ; 

call foo(); 

매우 우아하지하지만 트릭을 할해야

+0

예, 저장 프로 시저를 다시 설계해야했지만 솔루션은 사용자의 제안에 가깝습니다. 이제 SP1()이 임시 테이블을 만든 다음 SP2()를 호출 한 각 행에 대해 커서를 사용합니다. 이것이 좋은 연습인지는 모르겠지만 지금은 효과가 있습니다. – hmak

+0

시원한 - 잠시 시간 내 주셔서 감사합니다. :) –

+0

죄송합니다, 방금 동의하지 않았습니다. – hmak

0

커서가 문제를 해결하는 데 도움이됩니다.

이것이 가능한지 확실하지는 않지만 은 SP1()에 대한 선택 호출에 커서를두고 일반 커서로 반복합니다.

+0

어떻게 커서는이 문제를 해결할 것인가? – hmak

관련 문제