我试图实现一个存储过程来创建用户余额的快照,但我总是在第5行中得到一个错误,即语法错误,并且我还没有找到该语法错误的答案:
DROP PROCEDURE IF EXISTS createSnapshot;
DELIMITER //
CREATE PROCEDURE createSnapshot()
BEGIN
INSERT INTO balance_history (uid,coin_id,balance) SELECT uid,coin_id,amount FROM balance;
DECLARE done INT DEFAULT FALSE;
DECLARE cursor1 CURSOR FOR SELECT primary_key,timestamp FROM balance_history WHERE timestamp < DATE_SUB(NOW(), INTERVAL 7 DAY);
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
DECLARE id INT;
DECLARE time1 TIMESTAMP;
OPEN cursor1;
read_loop: LOOP;
IF done THEN
LEAVE read_loop;
END IF
FETCH cursor1 INTO id,time1;
END LOOP
CLOSE cursor1;
END//
分隔符;
1条答案
按热度按时间woobm2wo1#
mysql存储过程、函数等。。有一些关于变量可以在哪里声明的规则。通常,一个块的开始是最好的;尽管某些类型的局部变量必须在其他类型之后声明。
这是一个很好的参考开始在mysql文档中寻找细节。