2014-05-17 4 views
0

과 절차 내가A의 문 (MySQL의)

Select id,name,... FROM table WHERE id IN (?) 

쿼리 같은 쿼리가 실제로 다른 (?) 같은 ID를 가진 조인 더 복잡가 저장. 나는 관리하기 쉽고 안전하게하기 위해 저장 프로 시저에 저장하라는 지시를 받았지만, mysql은 배열을 지원하지 않기 때문에, 내가 할 수있는 최선의 방법은 무엇인지 모르겠다. 얼마나 많은 이드를 알고 있어야할까요? 나는 사람들이 끈을 통과하는 것을 보았다. 유일한 방법입니까?

+0

임시 테이블을 사용할 수 있습니다. http://stackoverflow.com/questions/8149545/pass-array-to-mysql-stored-routine : 비슷한 질문 [1] [1] [MySQL을 저장 루틴으로 패스 배열]입니다 –

답변

0

임시 테이블을 사용할 수 있습니다. 비록이 답변이 높게 표결되지는 않았으므로 문자열 매개 변수를 사용하는 것이 좋습니다 (17 표 v 2 표) (링크 참조). 임시 테이블에 대한 응답은 다른 질문에서 가져온 것입니다. Pass array to MySQL stored routine

임시 테이블과 조인을 사용하십시오. 임시 테이블을 함수에 전달할 필요가 없으며 전역 테이블입니다.

create temporary table ids(id int) ; 
insert into ids values (1),(2),(3) ; 

delimiter // 
drop procedure if exists tsel // 
create procedure tsel() -- uses temporary table named ids. no params 
READS SQL DATA 
BEGIN 
    -- use the temporary table `ids` in the SELECT statement or 
    -- whatever query you have 
    select * from Users INNER JOIN ids on userId=ids.id ; 
END // 
DELIMITER ; 

CALL tsel() ; -- call the procedure