以下のようにストアド プロシージャを実装しましたが、適用しようとすると次のエラー メッセージが表示されます。
エラー 1064 (42000): SQL 構文にエラーがあります。near 'WHERE symbol_id = id GROUP BY symbol_id; を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。
デバッグを行ったところ、結果を書き込もうとしている @max 変数が原因であることがわかりましたが、構文に問題はありません。誰かアドバイスしてもらえますか?
DROP PROCEDURE IF EXISTS `GENERATE_REPORT`;
DELIMITER $$
CREATE DEFINER=CURRENT_USER PROCEDURE `GENERATE_REPORT`()
BEGIN
DECLARE id INT;
DECLARE max INT;
DECLARE at_end BIT DEFAULT 0;
DECLARE cur CURSOR
FOR SELECT symbol_id from trade;
DECLARE CONTINUE HANDLER
FOR SQLSTATE '02000' SET at_end=1;
OPEN cur;
FETCH cur INTO id;
WHILE (NOT at_end) DO
SELECT SUM(quantity) FROM trade INTO **@max** WHERE symbol_id = id GROUP BY symbol_id;
FETCH cur into id;
END WHILE;
CLOSE cur;
END
$$ デリミタ;