2014-07-23 2 views
2

주어진 2 개의 날짜 사이의 날짜 목록을 임시 테이블에 가져 오는 저장 프로 시저를 만들었습니다. 이 임시 테이블에는 int 유형의 id와 date 유형의 날짜의 두 열이 있어야합니다. 문제는 출력에서 ​​나는 day 컬럼 만 얻는다. id 컬럼은 정의되지 않는다. 내가 뭘 잘못하고있어? 드롭 된 것과 동일한 이름을 가진 새로운 프로 시저를 만들어 저장 프로 시저를 적하 한 후, 그 후 enter image description hereMySQL - 임시 테이블의 정의되지 않은 열

+0

절차 마지막에 아무 것도 선택하지 않으시겠습니까? –

+0

@juergend no. 나는 다음과 같은 절차를 호출한다 :'call days ('2014-07-01', '2014-07-31'); SELECT * FROM date_range; ' – laura

+0

저에게 맞습니다. –

답변

1

, 그것은이다

DELIMITER $$  
CREATE DEFINER=`root`@`localhost` PROCEDURE `days`(IN dateStart DATE, IN dateEnd DATE) 
BEGIN 

    CREATE TEMPORARY TABLE IF NOT EXISTS date_range (id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, day DATE); 

    Delete from date_range; 

    WHILE dateStart <= dateEnd DO 
     INSERT INTO date_range(day) VALUES (dateStart); 
     SET dateStart = DATE_ADD(dateStart, INTERVAL 1 DAY); 
    END WHILE; 
END 

이 통화 및 저장 프로 시저의 출력은 MySql 워크 벤치를 다시 시작하는 데 필요합니다. 환경을 다시 시작하면 문제가 해결되었습니다.

관련 문제