当前位置: 首页 > news >正文

ps网站logo制作教程珠海建设网站的公司简介

ps网站logo制作教程,珠海建设网站的公司简介,扁平化网站模板,网站开发什么意思深刻理解MySQL8游标处理中not found 最近使用MySQL的游标#xff0c;在fetch循环过程中#xff0c;程序总是提前退出 #xff0c;百思不得其解#xff0c;经过测试#xff0c;原来是对于游标处理中not found的定义理解有误#xff0c;默认是视同Oracle的游标not found定…深刻理解MySQL8游标处理中not found 最近使用MySQL的游标在fetch循环过程中程序总是提前退出 百思不得其解经过测试原来是对于游标处理中not found的定义理解有误默认是视同Oracle的游标not found定义结果思考测试了两天终于走出了思维定式。 1. 问题描述 MySQL版本8.0.16 。 存储过程如下 CREATE DEFINERroot% PROCEDURE pro_test_nofound_cursor() begindeclare v_done int default 1 ;declare v_name varchar(10);declare v_date date;declare v_string text;declare v_for_nofound varchar(10);declare v_counter int default 0;declare cur_stud1 cursor for select t.name ,t.birthday from tb_student t where t.grade 70 and t.grade 80 order by t.grade desc limit 3;declare continue handler for not found set v_done 0;#使用游标前打开游标open cur_stud1 ;set v_string ;cur_loop: loopfetch next from cur_stud1 into v_name ,v_date;set v_counter v_counter 1;if v_done 0 then leave cur_loop;end if;-- 此查询无结果是空。 select t.name into v_for_nofound from tb_student t where t.grade 101 order by t.grade desc limit 1;set v_string concat(v_string, stud1:,v_name , :,v_date);end loop cur_loop;close cur_stud1 ;select v_string;select v_counter;end游标记录是3条记录但是查询结果只反馈一条记录值。 游标理解应该循环3次但是只返回了一条记录。 为什么 结果如下 mysql call pro_test_nofound_cursor(); ------------------------------- | v_string | ------------------------------- | stud1:CJXBCEXCOF :2023-09-18 | ------------------------------- 1 row in set (0.00 sec)Query OK, 0 rows affected (0.00 sec)mysql call pro_test_nofound_cursor(); ------------------------------- | v_string | ------------------------------- | stud1:CJXBCEXCOF :2023-09-18 | ------------------------------- 1 row in set (0.00 sec)----------- | v_counter | ----------- | 2 | ----------- 1 row in set (0.00 sec)Query OK, 0 rows affected (0.00 sec) 结果说明 记录返回只有1条 计数器是2 2. 问题分析 MySQL文档 MySQL定义not found的说明 NOT FOUND: Shorthand for the class of SQLSTATE values that begin with ‘02’. This is relevant within the context of cursors and is used to control what happens when a cursor reaches the end of a data set. If no more rows are available, a No Data condition occurs with SQLSTATE value ‘02000’. To detect this condition, you can set up a handler for it or for a NOT FOUND condition. DECLARE CONTINUE HANDLER FOR NOT FOUND BEGIN-- body of handler END; For another example, see Section 13.6.6, “Cursors”. The NOT FOUND condition also occurs for SELECT … INTO var_list statements that retrieve no rows. 说明 SQLSTATE value ‘02000’ 和 NOT FOUND 是等价的那么NOT FOUND 就不是cursor所专属的状态值。因此在循环中如果出现了查询没有结果的情况那么将直接 触发v_done 0 并非cursor的fetch 触发的结果。 注意与Oracle游标访问的notfound状态值是不同的oracle是专用于cursor而MySQL是notfound状态是所有SQL共用的 惯性思维困扰了两天。 declare continue handler for not found set v_done 0; 3. 问题解决 在游标循环中最后增加一行强制设置为1 set v_done 1; 程序只有在fetch的时候产生的v_done状态才能触发退出循环。 修改后的程序如下 CREATE DEFINERroot% PROCEDURE pro_test_nofound_cursor() begindeclare v_done int default 1 ;declare v_name varchar(10);declare v_date date;declare v_string text;declare v_for_nofound varchar(10);declare v_counter int default 0;declare cur_stud1 cursor for select t.name ,t.birthday from tb_student t where t.grade 70 and t.grade 80 order by t.grade desc limit 3;declare continue handler for not found set v_done 0;#使用游标前打开游标open cur_stud1 ;set v_string ;cur_loop: loopfetch next from cur_stud1 into v_name ,v_date;set v_counter v_counter 1;if v_done 0 then leave cur_loop;end if;-- 此查询无结果是空。 select t.name into v_for_nofound from tb_student t where t.grade 101 order by t.grade desc limit 1;set v_string concat(v_string, stud1:,v_name , :,v_date);set v_done 1;end loop cur_loop;close cur_stud1 ;select v_string;select v_counter;end执行结果 mysql call pro_test_nofound_cursor(); ----------------------------------------------------------------------------------------- | v_string | ----------------------------------------------------------------------------------------- | stud1:CJXBCEXCOF :2023-09-18 stud1:FIDLSJAYFS :2023-11-08 stud1:KEVQMOCIEW :2023-09-06 | ----------------------------------------------------------------------------------------- 1 row in set (0.01 sec)----------- | v_counter | ----------- | 4 | ----------- 1 row in set (0.01 sec)Query OK, 0 rows affected (0.01 sec) 执行结果正确返回了3条记录计数器值是4 。
http://www.sadfv.cn/news/303340/

相关文章:

  • 个人如何申请网站职业生涯规划大赛策划书
  • 河北建设厅网站怎么搜索文件网站的标志可以修改吗
  • 开公司可以在哪些网站做推广wordpress网站存放在
  • 网站 转成 微信小程序天津专门做网站的公司
  • 佛山网站定制开发专题网站策划书
  • 东莞哪里的网站建设效果好中国企业报官网
  • 湖北省住房和城乡建设厅门户网站网络推广沈阳
  • 东阳企业网站微商城建设wordpress球形标签
  • 长沙网站优化培训做公司网站哪家好重庆九龙坡区
  • 可以做数学题的网站企业网站每年的费用
  • 个人制作的网站网站上的图片怎么做
  • 做淘宝详情的网站phpcms如何做装饰网站
  • 为网站吸引流量的方法章丘做网站优化
  • iis 创建网站wordpress 快乐麻花
  • 江都区城乡建设局网站马局七牛镜像 wordpress
  • 网站域名后缀那个好销售管理app软件
  • 山东省建设厅官方网站怎么样海口小程序制作公司
  • 东营网站建设关键字排名问题老榕树智能建站软件
  • 网站无icp备案广州市官网网站建设多少钱
  • 榆林建设网站上海公司网站设计
  • 蓝冠在线网站建设做网站的公司是什么
  • 国外著名购物网站排名wordpress播放器安装
  • 建设公司网站需要准备什么仿微博网站模板
  • 河南开元建设有限公司网站自己做网站的费用
  • 网站建设-设计《网站建设与管理》论文
  • c 网站开发的好处营销型网站制作的方法
  • 绍兴网站推广排名江苏泰州seo网络优化推广
  • 做药品的电商网站有哪些网站后台上传图片显示运行错误为什么
  • 网站关键词如何做竞价专业的外贸建站公司
  • 优化网站搜索排名网站背景特效