MySQL一个简单的存储过程demo
使用的工具是Navicat for MySQL。
首先创建一个学生表
1 mysql> create table student(s_name varchar(20) not null default '不详',sex varchar(4) not null default '不详',s_no int(5) auto_increment,age int(3) not null,height int(3) not null,primary key(s_no)); 2 Query OK, 0 rows affected 3 4 mysql> insert into student (s_name,sex,age,height) values('小张','男',21,176); 5 Query OK, 1 row affected 6 7 mysql> insert into student (s_name,sex,age,height) values('小李','男',22,175); 8 Query OK, 1 row affected 9 10 mysql> insert into student (s_name,sex,age,height) values('小明','男',25,178); 11 Query OK, 1 row affected 12 13 mysql> insert into student (s_name,sex,age,height) values('小红','女',23,165); 14 Query OK, 1 row affected 15 16 mysql> insert into student (s_name,sex,age,height) values('小丽','女',19,160); 17 Query OK, 1 row affected 18 19 mysql> select * from student; 20 +--------+-----+------+-----+--------+ 21 | s_name | sex | s_no | age | height | 22 +--------+-----+------+-----+--------+ 23 | 小张 | 男 | 1 | 21 | 176 | 24 | 小李 | 男 | 2 | 22 | 175 | 25 | 小明 | 男 | 3 | 25 | 178 | 26 | 小红 | 女 | 4 | 23 | 165 | 27 | 小丽 | 女 | 5 | 19 | 160 | 28 +--------+-----+------+-----+--------+ 29 5 rows in set
然后写一个存储过程,传入姓名s_name,返回学号s_no
1 delimiter $$ 2 drop procedure if exists pro_gets_no; 3 create procedure pro_gets_no(in pname varchar(20),out pno int(5)) 4 begin 5 select s_no into pno from student where s_name=pname; 6 end $$ 7 delimiter;
运行之后调用
set @pname='小红'; set @pno=0; call pro_gets_no(@pname,@pno); select * from student where s_no=@pno;
结果如下
再创建一个存储过程,将传入姓名的学生身高height修改为175,并且将之后的姓名改为身高姓名作为姓名输出
1 delimiter $$ 2 drop procedure if exists pro_updateHeight; 3 create procedure pro_updateHeight(inout pname varchar(20)) 4 begin 5 update student set height=175 where s_name=pname; 6 select concat(height,s_name) into pname from student where s_name=pname; 7 end $$ 8 delimiter;
运行之后调用
1 set @pname='小李'; 2 call pro_updateHeight(@pname); 3 select @pname;
结果如下
posted on 2017-04-14 15:35 wangtianze 阅读(337) 评论(0) 编辑 收藏 举报