存储过程执行不报错,时间太快,但是执行无效
今天写了一个存储过程,来批量修改一个数据表中的字段
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条 则执行语句
希望对你有所帮助
存储过程执行不报错,时间太快,但是执行无效相关推荐
- HQL语句中数据类型转换,及hibernate中createQuery执行hql报错
一.HQL语句中数据类型转换: 我们需要从数据库中取出序号最大的记录,想到的方法就是使用order by子句进行排序(desc倒序),然后取出第一个对象,可是当初设计数据库时(我们是在原来的数据库的基 ...
- 【错误记录】Android 可执行权限报错 ( Cannot run program “/data/user/0/cn.e/ffmpeg“: error=13,Permission denied )
文章目录 一.报错信息 二.解决方案 一.报错信息 在应用中执行二进制可执行程序 , 将二进制文件拷贝到了 data/user/0/cn.example/files/ 目录下 , 2021-11-11 ...
- 在Linux执行命令报错”Arg list too long”的原因分析
http://www.yunweipai.com/archives/558.html 在Linux执行命令报错"Arg list too long"的原因分析 吞拿鱼手卷 于 3 ...
- 数据库执行sql报错Got a packet bigger than 'max_allowed_packet' bytes及重启mysql
准备在mysql上使用数据库A,但mysql5经过重装后,上面的数据库已丢失,只得通过之前备份的A.sql重新生成数据库A. 1.执行sql报错 在执行A.sql的过程中,出现如下错误:Got a p ...
- 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:/ ...
- 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 ...
- 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 ...
- 解决执行Command报错exit status 255
背景:go exec.Command 以前从未遇到过err报错255的,这次算是踩了一次坑. 出现这种情况,可将命令本身组装起来在环境上直接执行(用和代码中完全一样的参数),用$?查看结果状态看是否 ...
- 立即执行函数报错Uncaught TypeError: (intermediate value) is not a function.
立即执行函数报错Uncaught TypeError: (intermediate value) is not a function. 文章目录 立即执行函数报错Uncaught TypeError: ...
- linux下执行ffmpeg报错无法操作https资源的问题https protocol not found, recompile FFmpeg with openssl, gnutls
linux下执行ffmpeg报错无法操作https资源的问题https protocol not found, recompile FFmpeg with openssl, gnutls 报错 解决 ...
最新文章
- win10 rabbitMQ的安装与测试
- 是第一个成功设计微型计算机的人,()是第一个成功设计微型计算机的人。
- 【通俗理解】锁存器,触发器,寄存器和缓冲器的区别
- 【C语言】x++与++x
- Python的弱引用
- nginx 去掉服务器版本和名称和nginx_status 状态说明
- SAP UI5关于navigation API的boolean参数
- asp.net core web mvc之异常
- mysql重装第四步报错_Mysql 8.x 安装
- matlab批量处理图片压缩
- 【转载】Android 第三方ROM定制之适配谷歌Play Store
- 用ansys出黑白等值线图
- mbio期刊拒稿率_PLoS Pathogens
- Cesium案例解析(七)——Layers在线地图服务
- 4、MyBatis + Log4j日志查看Sql参数、结果集元数据、Mapper代理开发、JDK的动态代理与CGLib代理
- 上网行为管理功能概述及实现
- python批量搜索关键字_python – 搜索多个关键字的字符串列表
- 基于神经网络——鸢尾花识别(Iris)
- 慕容垂:百万战骨风云里——激荡的鲜卑史略之二(转载)
- linux开发板tftp 搭建,[转帖]4412开发板学习笔记-TFTP服务器的搭建
热门文章
- 2013 Multi-University Training Contest 5 部分解题报告
- Object-c实现各种排序算法 (汇总)
- 袁哥写的漏洞研究方法总结
- 本人在学习PHP过程中的随笔心得
- 秒懂上线必不可少的安全测试!
- 基于 Prometheus、InfluxDB 与 Grafana 打造监控平台
- 2021 年架构技术面试大厂高频题汇总(附答案详解)
- 某程序员吐槽自己追求某字节HR,暧昧半年,见面后却被告知是普通朋友!心态已崩!网友:别追HR!道行太深!...
- 必须了解的mysql三大日志-binlog、redo log和undo log
- 还在学JVM?我都帮你总结好了(附脑图)