,mysql存储过程

求助,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 变量名

看看结果

检查游标是否循环

,mysql存储过程

相关文章:

你感兴趣的文章:

标签云: