Rumah > pangkalan data > tutorial mysql > mysql 游标的使用总结

mysql 游标的使用总结

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2016-06-07 15:34:50
asal
1076 orang telah melayarinya

一、游标的基本概念 游标:游标是一个存储在Mysql服务器上的数据库查询,它不是一条select语句,而是被该语句检索出来的结果集。 本人,学习游标中,曾遇到一个问题,循环总是最后多执行一次。下面分析程序,这个是一个sql脚本程序 #if d=0 then #end if; 注

 

一、游标的基本概念

       游标:游标是一个存储在Mysql服务器上的数据库查询,它不是一条select语句,而是被该语句检索出来的结果集。

      本人,学习游标中,曾遇到一个问题,循环总是最后多执行一次。下面分析程序,这个是一个sql脚本程序

       #if d=0 then   #end if; 注释掉这两行时,会发现,游标中的repeat循环总是多执行一次。

       vendors 表中之前的数据为:

mysql 游标的使用总结

                                                                       图1

二、程序及结果分析

delimiter //
create procedure procursor(in num int)
begin
  declare d boolean default 0;
  declare o int;
  declare t int;
  declare c int default 0;
  declare mycur cursor for select vend_id from vendors;
  declare continue handler for sqlstate '02000' set d =1 ;
  create table if not exists results(re_id int,re_num int);
  open mycur;
 repeat
  fetch mycur into o;
#if d=0 then
  select o;
  # set t=o*num;
  insert into results values(o,num*o);
  set c=c+1;
 select d;
# end if;
 until d end repeat;
   close mycur;
select * from results;
select c;
end //
 delimiter ;
Salin selepas log masuk

 

注释 #if d=0 then 和# end if;  执行以上sql语句后,call procursor(100); 执行结果如图2所示;发现,游标的循环总是多执行了一次,执行了4次mysql 游标的使用总结,

分析发现,原因在于,最后一次fetch mycur into o;时,mycur 为空 ,o值未更改,所以,最后一组值,多执行了一次。此时若检测d的值,发现d为1。将#if d=0 then和# end if;注释去掉,做一个条件判断后的结果如图3所示。

结果正确mysql 游标的使用总结


mysql 游标的使用总结          mysql 游标的使用总结

                      图2                                                                                                图3

 

 

 

 

 

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan