1

以下のようにストアド プロシージャを実装しましたが、適用しようとすると次のエラー メッセージが表示されます。

エラー 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

$$ デリミタ;

4

1 に答える 1