• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

,mysql存储过程

mysql 搞代码 7年前 (2018-06-02) 165次浏览 已收录 0个评论

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

检查游标是否循环


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:,mysql存储过程

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址