调用这个存储过程,程序为什么会死掉?
- SQL code
DELIMITER $$USE 'dzhst2'$$DROP PROCEDURE IF EXISTS `test_mwl`$$CREATE PROCEDURE `test_mwl`()BEGINDECLARE flag INT DEFAULT 0;DECLARE v_co VARCHAR(32);DECLARE v_c10 MEDIUMTEXT;DECLARE objs LONGTEXT;-- 定义游标DECLARE myCursor CURSOR FOR (SELECT DISTINCT co,c10 FROM ST22059_main WHERE c10 IS NOT NULL);DECLARE CONTINUE HANDLER FOR NOT FOUND SET flag=1;-- 创建临时表DROP TABLE IF EXISTS tmp_table; CREATE TEMPORARY TABLE tmp_table(tmp_co VARCHAR(32),tmp_c10 MEDIUMTEXT)ENGINE=MEMORY;-- 打开游标OPEN myCursor;-- 将游标指定的数据赋值给变量FETCH myCursor INTO v_co,v_c10;REPEATIF NOT flag THEN INSERT INTO tmp_table(tmp_co,tmp_c10) VALUES(v_co,v_c10);END IF;UNTIL flagEND REPEAT;-- 关闭游标CLOSE myCursor; -- 查询临时表SET objs='SELECT DISTINCT tmp_co,tmp_c10 FROM tmp_table';SET @sql_txt = objs;PREPARE stmt FROM @sql_txt;EXECUTE stmt;DEALLOCATE PREPARE stmt;-- 清空临时表TRUNCATE tmp_table;END$$DELIMITER ;
调用这个存储过程,程序为什么会死掉?
帮忙看一下
[解决办法]
REPEAT
IF NOT flag THEN
INSERT INTO tmp_table(tmp_co,tmp_c10) VALUES(v_co,v_c10);
END IF;
UNTIL flag
这个是死循环 ,结束条件是什么
[解决办法]
flag一直是0吧 什么时候跳出repeat呢
[解决办法]
还是死循环造成的,无法跳出循环的原因。