機能するストアド プロシージャがありますが、ハイフンを含む値を渡すとエラーになります。
call create('server-v01',555); のような値でプロシージャを呼び出します。次のエラーが表示されます。
エラー 1064 (42000): SQL 構文にエラーがあります。1行目の「-v01」付近で使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください
私の手順は次のとおりです。
DELIMITER $$
CREATE PROCEDURE ct(tname varchar(20), sessionsnum INT(11))
BEGIN
DECLARE maxnum INT;
SET @s = CONCAT('INSERT INTO sessions_poll (server_name,sessions_num) VALUES(''',tname,''',',sessionsnum,')');
PREPARE stm FROM @s;
EXECUTE stm;
SET @s = CONCAT('DROP TABLE IF EXISTS ', tname);
PREPARE stm FROM @s;
EXECUTE stm;
SET @s = CONCAT('CREATE TABLE ', tname, ' (num INT, max INT)');
PREPARE stm FROM @s;
EXECUTE stm;
SELECT @maxnum:=max(sessions_num) INTO maxnum FROM sessions_poll WHERE server_name=tname AND DATE(ts)=CURDATE();
SET @s = CONCAT('INSERT INTO ', tname, ' (num,max) VALUES (', sessionsnum,',',maxnum,')');
PREPARE stm FROM @s;
EXECUTE stm;
END $$
DELIMITER ;
私の質問は、ハイフンを含む変数をどのように処理できますか?