2017-09-28 6 views
0

여기 내 첫 번째 게시물이므로, 실수 나 누락 된 정보가 있으면 죄송합니다. 프로 시저에서 임시 테이블을 만들려고 시도하지만 어떻게 든 프로 시저를 구현하려고하면 오류가 계속 발생합니다 (# 1064 at DECLARE l_coin_base_id INT UNSIGNED). 전체 임시 테이블 만들기 부분을 제거하고 작업 했으므로 실수가이 부분에 있다고 생각합니다.저장 프로 시저 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 부분을 실행하려고하면 임시 테이블과 해당 테이블을 올바르게 만들 수 있습니다. 구글도 그 사실을 안다. (이것은 또한 처음으로 참여를 사용하여 내 실수일까요?).

나는 정말 도움이 될 것입니다.

답변

1

프로 시저 중간에서 변수를 정의 할 수 없습니다. BEGIN 이후이어야합니다. 프로 시저 시작시 모든 변수를 선언하십시오.

+0

오 하나님, 어리석은 ... 감사합니다. – djfhe

관련 문제