2017-09-28 67 views
0

これは私の最初の投稿ですので、ご迷惑をおかけして申し訳ありませんが、あなたが期待している情報がありません。 私はプロシージャ内にテンポラリテーブルを作成しようとしていますが、何らかの理由でプロシージャを実装しようとするとエラーが発生し続けます(#1064:DECLARE l_coin_base_id INT UNSIGNED)。 Create Temporary Tableの部分全体を削除したので、私は間違いがこの部分にあると信じています。ストアドプロシージャmysqlの一時テーブルの作成

DELIMITER // 
CREATE PROCEDURE UPDATE_HISTORY()` 

MODIFIES SQL DATA 
BEGIN 
    DECLARE l_c_pair INT DEFAULT (SELECT COUNT(*) + 1 FROM pairList); 
    DECLARE i INT DEFAULT 1; 
    DECLARE l_now INT UNSIGNED DEFAULT UNIX_TIMESTAMP() - 300;` 

    CREATE TEMPORARY TABLE temp_history ENGINE = MEMORY AS(
SELECT 
    active_pairList.base, 
    active_pairList.peer, 
    (active_history.highest_ask + active_history.highest_bid)/2 AS price, 
    active_history.buy_volume, 
    active_history.sell_volume, 
    active_history.trade_volume 
FROM 
    active_history 
INNER JOIN 
    active_pairList 
ON 
    active_history.sell_volume IS NOT NULL 
    AND active_history.buy_volume IS NOT NULL 
    AND active_history.trade_volume IS NOT NULL 
    AND active_history.timeStamp > l_now); 
    DECLARE l_coin_base_id INT UNSIGNED; 
    DECLARE l_coin_peer_id INT UNSIGNED; 
    DECLARE l_avg_price FLOAT UNSIGNED; 
    DECLARE l_sum_buy_volume FLOAT UNSIGNED; 
    DECLARE l_sum_sell_volume FLOAT UNSIGNED; 
    DECLARE l_sum_trade_volume FLOAT UNSIGNED; 
-- doing smth. -- 
END // 
DELIMITER ; 

文でCREATE TEMPORARY TABLE部分を実行しようとすると、一時表とその作成を正しく作成できます。 Googleはどちらもそれを知っていません。 (これは私の初めての参加ですので、間違いがありますか?)

私は本当に助けに感謝します。

答えて

1

プロシージャの途中で変数を定義することはできません。 BEGINの後にする必要があります。 プロシージャの最初にすべての変数を宣言します。

+0

ああ、私は愚かなのです...ありがとうございます。 – djfhe

関連する問題