求助,mysql存储过程
接触mysql存储过程不久,用的不熟,看看啥问题啊(测试阶段)
3张表,t1(cardno,flag),t2(cardno,cardno2),tt(cardno,tip),根据t1中的flag,更新tt中的tip值
CREATE DEFINER=`mposp`@`%` PROCEDURE `p_test`()
BEGIN
top:BEGIN
DECLARE c_cardno INT(16);
DECLARE c_flag INT(1);
DECLARE n_exist INT DEFAULT 0;
DECLARE cur_act CURSOR FOR
/*将两张表中数据合并*/
SELECT cardno,flag
FROM t1
WHERE flag IS NOT NULL AND flag!=0
UNION
SELECT t2.cardno2,t1.flag/*cardno2和cardno1数据类型一至*/
FROM t1,t2
WHERE t1.vardno=t2.cardno and flag IS NOT NULL AND flag!=0;
SELECT COUNT(*)
INTO n_exist
FROM t1;
IF n_exist = 0 THEN
LEAVE top;
END IF;
OPEN cur_act;
FETCH cur_act INTO c_cardno, c_flag;
IF c_flag=1 THEN
UPDATE tt SET tip=1 WHERE cardno =c_cardno ;
LEAVE top;
END IF;
IF c_flag=2 THEN
UPDATE tt SET tip=2 WHERE cardno =c_cardno ;
LEAVE top;
END IF;
CLOSE cur_act;
END top;
END$$
------解决方案--------------------楼主自己先描述一下问题所在,你碰到的问题是什么? 语法出错?无法运行?运行结果不对?
问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧)
------解决方案--------------------没用过存储,不过看你结果是没有更新数据库。
在外面执行一下
SELECT cardno,flag
FROM t1
WHERE flag IS NOT NULL AND flag!=0
UNION
SELECT t2.cardno2,t1.flag/*cardno2和cardno1数据类型一至*/
FROM t1,t2
WHERE t1.vardno=t2.cardno and flag IS NOT NULL AND flag!=0;
这个语句看结果是多少吧。
------解决方案--------------------
只有分步调试,检查
结果
SELECT 变量名
看看结果
检查游标是否循环