今天写了一个存储过程,来批量修改一个数据表中的字段

call pro();

执行了语句执行,发现立刻就执行结束了

这未免也太顺利了,感觉不太可能啊

发现执行的更新操作,实际上并没有更新,但是数据也没有报错啊

到底是什么缘故

我也思来想去,我们一起来看一下存储过程

DROP PROCEDURE IF EXISTS PR_HXTest1;
delimiter //
CREATE PROCEDURE PR_HXTest1()
BEGINDECLARE v_taxid varchar(50);DECLARE v_taxcode varchar(50);DECLARE done INT DEFAULT FALSE;DECLARE myCursor CURSOR FOR (select taxcode from abc ORDER BY amount asc);DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;OPEN myCursor; myLoop: LOOP FETCH myCursor into v_taxcode;IF done=1 THENLEAVE myLoop; END IF;select taxcorpid into v_taxid from hx_enp where v_taxcode=taxno; if v_taxid is not null and v_taxcode is not null thenupdate abc set taxid=v_taxid where taxcode=v_taxcode;end if;END LOOP myLoop;CLOSE myCursor;
END
//call PR_HXTest1();

执行也不报错

到底是那里的问题,但是可以看到的是,循环中就执行了两个过程

一个是select,一个是update

语句都没有问题,我使用单一变量环境方法 发现是select语句加上去执行,就执行的快了

最后发现是 select  可能返回多条结果导致的,

 select taxcorpid into v_taxid from hx_enp where v_taxcode=taxno limit 1; 

这样修改执行,是可以执行的 ,但是limit 1 往往最后保留的结果并不是我们想要的

所以为了更为准确的起见:

CREATE DEFINER=`root`@`%` PROCEDURE `PR_HXTest1`()
BEGINDECLARE v_taxid varchar(50);DECLARE v_taxcode varchar(50);DECLARE iscontain varchar(32);DECLARE done INT DEFAULT FALSE;DECLARE myCursor CURSOR FOR (select CONVERT(taxcode,CHAR) from abc ORDER BY amount asc);DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;OPEN myCursor; myLoop: LOOP FETCH myCursor into v_taxcode;IF done=1 THENLEAVE myLoop; END IF;select count(1) into iscontain from hx_enp where taxno=v_taxcode;if iscontain='1' thenselect taxcorpid into v_taxid from hx_enp where taxno=CAST(v_taxcode as CHAR);update abc set taxid=v_taxid where taxcode=v_taxcode;end if;END LOOP myLoop;CLOSE myCursor;
END

我们先查找个数,如果确实为 1条 则执行语句

希望对你有所帮助

存储过程执行不报错,时间太快,但是执行无效相关推荐

  1. HQL语句中数据类型转换,及hibernate中createQuery执行hql报错

    一.HQL语句中数据类型转换: 我们需要从数据库中取出序号最大的记录,想到的方法就是使用order by子句进行排序(desc倒序),然后取出第一个对象,可是当初设计数据库时(我们是在原来的数据库的基 ...

  2. 【错误记录】Android 可执行权限报错 ( Cannot run program “/data/user/0/cn.e/ffmpeg“: error=13,Permission denied )

    文章目录 一.报错信息 二.解决方案 一.报错信息 在应用中执行二进制可执行程序 , 将二进制文件拷贝到了 data/user/0/cn.example/files/ 目录下 , 2021-11-11 ...

  3. 在Linux执行命令报错”Arg list too long”的原因分析

    http://www.yunweipai.com/archives/558.html 在Linux执行命令报错"Arg list too long"的原因分析 吞拿鱼手卷 于 3 ...

  4. 数据库执行sql报错Got a packet bigger than 'max_allowed_packet' bytes及重启mysql

    准备在mysql上使用数据库A,但mysql5经过重装后,上面的数据库已丢失,只得通过之前备份的A.sql重新生成数据库A. 1.执行sql报错 在执行A.sql的过程中,出现如下错误:Got a p ...

  5. Ubuntu执行脚本报错-bash: ./send.py: /usr/bin/python: bad interpreter: Permission denied

    在Ubuntu系统终端中,使用命令行如下命令行运行*.py文件: 执行脚本报错 root@ubuntu:/usr/bin/python# chmod a+x send.py root@ubuntu:/ ...

  6. linux执行sudo报错【/etc/sudo.conf is owned by uid 994, should be 0】

    linux执行sudo报错[/etc/sudo.conf is owned by uid 994, should be 0] 错误描述 如下图: 案例一 案例二 解决办法: 执行命令 pkexec c ...

  7. tomcat执行shutdown报错Could not contact [localhost:8005] (base port [8005] and offset [0]). Tomcat may n

    学习笔记 困扰了好久的问题,每次重启tomcat执行shutdown就报错Could not contact [localhost:8005] (base port [8005] and offset ...

  8. 解决执行Command报错exit status 255

    背景:go  exec.Command 以前从未遇到过err报错255的,这次算是踩了一次坑. 出现这种情况,可将命令本身组装起来在环境上直接执行(用和代码中完全一样的参数),用$?查看结果状态看是否 ...

  9. 立即执行函数报错Uncaught TypeError: (intermediate value) is not a function.

    立即执行函数报错Uncaught TypeError: (intermediate value) is not a function. 文章目录 立即执行函数报错Uncaught TypeError: ...

  10. linux下执行ffmpeg报错无法操作https资源的问题https protocol not found, recompile FFmpeg with openssl, gnutls

    linux下执行ffmpeg报错无法操作https资源的问题https protocol not found, recompile FFmpeg with openssl, gnutls 报错 解决 ...

最新文章

  1. win10 rabbitMQ的安装与测试
  2. 是第一个成功设计微型计算机的人,()是第一个成功设计微型计算机的人。
  3. 【通俗理解】锁存器,触发器,寄存器和缓冲器的区别
  4. 【C语言】x++与++x
  5. Python的弱引用
  6. nginx 去掉服务器版本和名称和nginx_status 状态说明
  7. SAP UI5关于navigation API的boolean参数
  8. asp.net core web mvc之异常
  9. mysql重装第四步报错_Mysql 8.x 安装
  10. matlab批量处理图片压缩
  11. 【转载】Android 第三方ROM定制之适配谷歌Play Store
  12. 用ansys出黑白等值线图
  13. mbio期刊拒稿率_PLoS Pathogens
  14. Cesium案例解析(七)——Layers在线地图服务
  15. 4、MyBatis + Log4j日志查看Sql参数、结果集元数据、Mapper代理开发、JDK的动态代理与CGLib代理
  16. 上网行为管理功能概述及实现
  17. python批量搜索关键字_python – 搜索多个关键字的字符串列表
  18. 基于神经网络——鸢尾花识别(Iris)
  19. 慕容垂:百万战骨风云里——激荡的鲜卑史略之二(转载)
  20. linux开发板tftp 搭建,[转帖]4412开发板学习笔记-TFTP服务器的搭建

热门文章

  1. 2013 Multi-University Training Contest 5 部分解题报告
  2. Object-c实现各种排序算法 (汇总)
  3. 袁哥写的漏洞研究方法总结
  4. 本人在学习PHP过程中的随笔心得
  5. 秒懂上线必不可少的安全测试!
  6. 基于 Prometheus、InfluxDB 与 Grafana 打造监控平台
  7. 2021 年架构技术面试大厂高频题汇总(附答案详解)
  8. 某程序员吐槽自己追求某字节HR,暧昧半年,见面后却被告知是普通朋友!心态已崩!网友:别追HR!道行太深!...
  9. 必须了解的mysql三大日志-binlog、redo log和undo log
  10. 还在学JVM?我都帮你总结好了(附脑图)