求助,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 变量名
看看结果
检查游标是否循环