DELIMITER //
DROP PROCEDURE if exists mzeng.test2//
CREATE PROCEDURE mzeng.test2(TerminalName VARCHAR(25),tablename varchar(25), SetStartDate datetime, SetEndDate datetime)
BEGIN
SET @t1 =CONCAT('create view mzeng.',tablename,' as SELECT * FROM ',TerminalName,'.restaurants where lud_dtm >= ', SetStartDate,' and lud_dtm < ',SetEndDate);
PREPARE stmt3 FROM @t1;
EXECUTE stmt3;
DEALLOCATE PREPARE stmt3;
end//
DELIMITER ;
call mzeng.test2('otg_ewrc1', 'EWRc1_TransactionalTable2','2017-07-01 04:00:00','2017-07-02 04:00:00');
여기에 날짜의 데이터 유형은 'datetime'이어야합니다. 그러나, 내가 프로 시저를 호출하면 올바른 구문을 확인하기 위해 뭔가를 말하는 오류 코드를 반환합니다.MySQL 저장 프로 시저의 잘못된 데이터 값
시작 날짜와 종료 날짜의 데이터 형식을 '날짜'로 변경하면 잘못된 날짜 값을 나타내는 오류 메시지가 반환됩니다. 뷰가 생성되지만 비어 있습니다.
처음으로이 웹 사이트를 사용하는 중입니다. 고마워.
------------------- 업데이트 --------------
나는 해결책을 찾아 냈다. 그냥 단순히 "일 전후에이 --- lud_dtm> =."추가하고 'SetStartDate,' "와 lud_dtm <" 'SetEndDate,' "; ')
는 찾아 내게 시간이 걸렸다 . 밖으로 롤
하는 당신은 VIE을 만들 수 없습니다 프로 시저에서 동적 테이블 이름을 사용합니다. 준비된 문은 DDL 명령 (예 :보기 만들기, 테이블 만들기 또는 유사)을 포함해서는 안되며 DML 지침 만 허용됩니다. – Psi
할 수 있습니다. 나는 매개 변수로 날짜를 사용할 필요가없는 또 다른 쿼리를 가지고 있으며 완벽하게 정상적으로 작동합니다. –