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
我相信我可以。我有另一個不需要使用日期作爲參數的查詢,它工作得很好。 –