2015-02-05 1 views
0

프로 시저의 CURSOR을 사용하여 여러 행을 리턴하려고합니다. 하지만 빈 값을 반환합니다. 필자는 테스트 목적으로 간단한 select 쿼리를 사용했습니다.스토어 프로 시저가 다중 행을 리턴하지 않습니다.

CREATE DEFINER=`root`@`localhost` PROCEDURE `get_user`() 
     READS SQL DATA 
    BEGIN 
     DECLARE id INT; 
     DECLARE name VARCHAR (256); 

     DECLARE done int default 0; 

     DECLARE curl CURSOR FOR 

     SELECT id, name FROM user; 

     DECLARE CONTINUE HANDLER FOR NOT FOUND SET DONE = 1; 

     OPEN curl; 
      data_loop:LOOP 
       FETCH curl INTO id, name; 
       IF done=1 THEN 
        leave data_loop; 
       END IF; 
      END LOOP data_loop; 
     CLOSE curl; 
    END 

답변

1

절차는 SELECT로 종료해야합니다 (여러 행에 대해).

하지만 최종 SELECT를 표시 할 수 없습니다.

예를 들어 USER 테이블의 동일한 필드에 임시 테이블 USERS2 (CREATE TEMPORARY TABLE users2)를 사용할 수 있습니다. 루프에서 USERS2 (INSERT INTO users2 ... and so on)에 쓸 수 있으므로 다음과 같이 작성하십시오.

+1

임시 테이블 사용이 예입니다. 중요한 것은 마지막 SELECT를 반환하는 것입니다. –

관련 문제