首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

调用这个存储过程,程序为什么会死掉?该如何处理

2012-04-26 
调用这个存储过程,程序为什么会死掉?SQL codeDELIMITER $$USE dzhst2$$DROP PROCEDURE IF EXISTS `test_

调用这个存储过程,程序为什么会死掉?

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呢
[解决办法]
还是死循环造成的,无法跳出循环的原因。

热点排行