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 ws在过程中使用动态表名。编写的语句不得包含DDL指令(例如创建视图,创建表或类似语句),只允许DML指令 – Psi
我相信我可以。我有另一个不需要使用日期作为参数的查询,它工作得很好。 –