首页 > 解决方案 > MySQL:错误出现在过程的插入语句中

问题描述

我是 MySQL 新手。我正在尝试将数据从一个表迁移到另一个表。所以我写了一个程序。过程中有一条插入语句会引发错误。在 phpmyadmin 它只说错误是连接错误。下面是代码

DELIMITER //

CREATE PROCEDURE transfer_proc()
BEGIN
    DECLARE finished INTEGER DEFAULT 0;
    DECLARE OLD_ID INT;
    DECLARE NEW_ID INT;
    DECLARE MYPLAN INT;
    DECLARE DAT DATE;
    DECLARE DUTY varchar(200) DEFAULT "";
    DECLARE DS_DIV INT;
    DECLARE VEN varchar(200) DEFAULT "";
    DECLARE REM varchar(200) DEFAULT "";

    DEClARE CURDAT 
        CURSOR FOR 
            select mp.ID,mp.MY_PLAN_ID,mp.DATE, mp.DUTY_PROGRAMME,mp.DS_DIVISION_ID,mp.VENUE,mp.REMARKS
            from my_plan_custom_programme mp;

    DECLARE CONTINUE HANDLER 
        FOR NOT FOUND SET finished = 1;
        
        OPEN CURDAT;

    CURLOOP: LOOP
        FETCH CURDAT INTO OLD_ID,MYPLAN,DAT,DUTY,DS_DIV,VEN,REM;
        IF finished = 1 THEN 
            LEAVE CURLOOP;
        END IF;
                
        INSERT INTO my_plan_all_saved_programmes(MY_PLAN_ID,DATE,DUTY_PROGRAMME,DS_DIVISION_ID,VENUE,REMARKS)
        VALUES(MYPLAN,DAT,DUTY,DS_DIV,VEN,REM);
        
        
        SELECT MAX(ID) INTO NEW_ID FROM my_plan_all_saved_programmes;

        INSERT INTO my_plan_all_saved_ds_division(MY_PLAN_CUS_ID,DS_DIV)
        SELECT NEW_ID,DS_DIV FROM my_plan_ds_division WHERE MY_PLAN_CUS_ID = OLD_ID;
        
        
        
    END LOOP CURLOOP;
    CLOSE CURDAT;
    
 END;
 //

DELIMITER ; 

错误出现在循环中的最后一个插入语句中。如果没有该插入语句,程序就会被创建。但是当它在那里时,它会显示连接错误。

INSERT INTO my_plan_all_saved_ds_division(MY_PLAN_CUS_ID,DS_DIV)
SELECT NEW_ID,DS_DIV FROM my_plan_ds_division WHERE MY_PLAN_CUS_ID = OLD_ID;

有人可以告诉那个查询有什么问题吗?

标签: mysqlsql

解决方案


推荐阅读