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ストアドプロシージャのデータ値が正しくない
開始日と終了日のデータ型を 'date'に変更すると、不正な日付値を示すエラーメッセージが返されます。ビューは作成されますが、空です。
初めてこのウェブサイトを使用しています。みんなありがとう。
-------------------アップデート--------------
解決策が見つかりました。それは単に "日付の前と後に、この --- lud_dtm> =。" 追加された 'SetStartDate、' "とlud_dtm <"」、SetEndDate、 '";')
は見つけるために私に時間を要しましたアウト笑
あなたは、VIEを作成することはできませんプロシージャで動的テーブル名を使用します。準備されたステートメントにはDDL命令(ビューの作成、テーブルの作成など)を含めることはできません.DML命令のみが許可されます。 – Psi
私はできると確信しています。私はパラメータとして日付を使用する必要はありません別のクエリがあり、それは完全に正常に動作します。 –