探讨mysql的游标cursor

liyuzhao8年前学习记录1531

以下是我的做法步骤代码:

//新建动物表
create table dw(
dw_id int,
dw_name varchar(20),
dw_num varchar(10)

);
//插入几条数据
insert into dw values(1,’mao’,’10’)$
insert into dw values(2,’gou’,’20’)$
insert into dw values(3,’ping’,’30’)$
//创建存储过程,并声明游标,循环查询出一个表的所有数据
create procedure p1()
begin
declare a int default 1; –定义一个循环条件
declare id int; –用来装查询出来的动物id
declare name varchar(20); –用来装查询出来动物名字
declare num varchar(10);
declare getdw cursor for select dw_id,dw_name,dw_num from dw;
declare exit handler for NOT FOUND set a:=0; –exit–>是当条件满足了就不执行下面的代码,continue反过来。这里的意思是,当表没有数据了,就会触发

open getdw;
repeat
fetch getdw into id,name,num; –把查询出来的值赋给这些变量
select id,name,num;
until a=0 end repeat;
close getdw;
end$

测试p1,如图:

58d2a16213013.png

已经成功的查询出所有的数据。以上必须要去掉注释,否则会出错。



相关文章

用mysql创建触发器

学习创建触发器:触发器的定义就是,当执行增删改查等操作就会触发执行sql语句。 先创建两个表:dongwu表和购买buy表,数据字典如下:动物表:Create table dongwu(Dw...

数据库的for each row定义

在mysql中,for each row 是定义行级触发器的语句,如果不写是错误的,因为mysql还没有支持语句触发器。在oracle中,如果不写默认为语句触发器,就是不管执行多少次,都只触发一次语句...

探讨mysql编程形参的in,out,inout型

探讨mysql编程形参的in,out,inout型

mysql的形参可以传入数值,也可以传入变量,下面来探讨一下:先探讨in和out型:delimiter $create procedure p2(in a int , out b int)begind...

数据库实现1+到N得出总和的编程

数据库实现1+到N得出总和的编程

delimiter $    //这个是把结束符号变为$create procedure p1(N int)begindeclare total int default 0;dec...

redis在centos7 自启动,并用service启动或者关闭

redis在centos7 自启动,并用service启动或者关闭

1.为了让redis-server能在系统启动时自动运行,需要将redis服务作为守护进程(daemon)来运行,我们回/usr/local/cluster/7000/目录中找到一个redis.con...

探讨mysql的权限问题

不管是本地连接数据库还是远程连接数据库,要想连接成功必须要有四样:1:host   –>连接地址2:user  –>连接账号3:password  –>...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。