mysql - MySQL 存储过程分隔符错误
问题描述
我正在尝试实现一个存储过程来创建用户余额的快照,但我总是在第 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//
分隔符;
解决方案
MySQL 存储过程、函数等有一些关于可以在何处声明变量的规则。通常,块的开始是最好的;尽管某些类型的局部变量必须在其他变量之后声明。
在寻找细节时,这是一个很好的参考,可以从 MySQL 文档开始。
推荐阅读
- c++ - UAudioComponent 反复播放声音
- javascript - 如何在 React 的同一组件中使用按钮 setState() 另一个输入值?
- flutter - Flutter appauth 参数无效:redirect_uri
- vue.js - VUE CLI / WEBPACK - 从 scss 生成 /public .css 文件
- javascript - 在页面刷新之前,Rest API 响应不会更新
- microsoft-graph-cloudcommunications - Microsoft Graph - DELETE onlineMeeting/{Id} 不会删除会议
- php - FedEx Api:错误的请求错误,缺少或重复的参数。请修改您的请求,然后重试
- python - ValueError:无法将字符串转换为浮点数:'220'
- javascript - 样式组件错误“无法读取未定义的属性”正在传递的道具
- amazon-web-services - UNLOAD 使用包含引号和分隔符的数据