簡體   English   中英

在存儲過程中創建臨時表

[英]Creating temporary Tables in stored Proceduresmysql

這是我在這里的第一篇文章,對於您期望的任何錯誤或缺少信息,我深感抱歉。 我試圖在過程中創建臨時表,但是當我嘗試執行過程時,我卻以某種方式不斷出錯(在DECLARE l_coin_base_id INT UNSIGNED處為#1064)。 我刪除了整個“創建臨時表”部分,並且該部分起作用了,所以我認為我的錯誤在於此部分。

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部分,則無法創建臨時表及其正確創建的表。 谷歌也不知道。 (這也是我第一次使用join,所以也許是我的錯誤?)。

如果有任何幫助,我將非常感謝。

您不能在過程中間定義變量。 應該在開始之后。 因此,在程序開始時聲明所有變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM