在mysql过程中放置​​删除sql

问题描述

我需要从存储过程中的登台表中删除记录。然后,我需要将记录插入同一张表中。这必须在使用游标遍历记录之前完成。

DELIMITER //

CREATE PROCEDURE Get_Employee_Records()
BEGIN

DECLARE rollingSum INT DEFAULT 0;
DECLARE theMonth varchar(3);

-- Delete & insert on Employee must be done prior to the select 

DECLARE mycursor CURSOR FOR  SELECT Tgrowth,TYear,myMONTH FROM Employee;
         -- cursor body here
    CLOSE mycursor;

END //

DELIMITER ;

当我将我的插入和删除语句放在注释部分时,我得到

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE mycursor CURSOR FOR  SELECT Tgrowth,myMONTH FROM Employee' at line 63

在哪里将插入和删除sql放在过程中的正确位置。我可能可以在一个单独的过程中执行此操作,但是我想知道我是否在这里丢失了一些东西。

解决方法

在begin ... end块声明中,必须在任何其他代码之前出现声明,因此 像这样将光标部分包装在begin..end中(顺便说一句,您需要修复代码)。

begin
    DECLARE mycursor CURSOR FOR  SELECT Tgrowth,TYear,myMONTH FROM Employee;
         -- cursor body here
    open mycursor;
    CLOSE mycursor;
end;

几乎从来没有理由在sql中使用游标-您确定您的方法合适吗?

,

我对MYSQL不太熟悉,但我认为DELETE和INSERT应该在游标声明之后以及在打开和关闭游标之前出现。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...