결과 집합을 반환하는 MYSQL 저장 프로 시저 SP1()이 있습니다.다른 저장 프로 시저에서 mysql 저장 프로 시저의 결과 집합을 사용하십시오.
SP2()에서 SP1()을 호출하고 SP1()의 결과 집합을 반복하여 추가 작업을 수행하려고합니다.
SP2()가 너무 복잡하기 때문에 SP1()에서 내 논리를 포함하고 싶지 않습니다.
제안 사항?
감사합니다.
결과 집합을 반환하는 MYSQL 저장 프로 시저 SP1()이 있습니다.다른 저장 프로 시저에서 mysql 저장 프로 시저의 결과 집합을 사용하십시오.
SP2()에서 SP1()을 호출하고 SP1()의 결과 집합을 반복하여 추가 작업을 수행하려고합니다.
SP2()가 너무 복잡하기 때문에 SP1()에서 내 논리를 포함하고 싶지 않습니다.
제안 사항?
감사합니다.
당신이하고 싶은 것이 나던 것이 좋을 것입니다. 그리고 어쩌면 당신은 그 두 개의 procs를 재 설계하는 것에 대해 생각해야합니다. 그러나 빠른 수정으로 다음과 같이 할 수 있습니다.
중간 결과를 임시 테이블에 작성하여 sp1 내부에서 액세스/처리 할 수 있습니다. 그런 다음 sp1이 반환하면 sp2에서 만든 임시 테이블을 삭제할 수 있습니다.
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();
매우 우아하지하지만 트릭을 할해야
커서가 문제를 해결하는 데 도움이됩니다.
이것이 가능한지 확실하지는 않지만 은 SP1()에 대한 선택 호출에 커서를두고 일반 커서로 반복합니다.
어떻게 커서는이 문제를 해결할 것인가? – hmak
예, 저장 프로 시저를 다시 설계해야했지만 솔루션은 사용자의 제안에 가깝습니다. 이제 SP1()이 임시 테이블을 만든 다음 SP2()를 호출 한 각 행에 대해 커서를 사용합니다. 이것이 좋은 연습인지는 모르겠지만 지금은 효과가 있습니다. – hmak
시원한 - 잠시 시간 내 주셔서 감사합니다. :) –
죄송합니다, 방금 동의하지 않았습니다. – hmak