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;

结果如下

时间: 2024-10-28 17:26:45

MySQL关于存储过程的简单Demo的相关文章

Mysql调试存储过程最简单的方法

以前同事告诉我用临时表插入变量数据来查看,但是这种方法过于麻烦,而且Mysql没有比较好的调试存储过程的工具.今天google了下发现可以用select + 变量名的方法来调试...真是让我汗颜啊. 具体方法: 在你的存储过程中加入如下语句: SELECT 变量1,变量2; 然后用mysql自带的cmd程序进入mysql> 下. call 你的存储过程名(输入参数1,@输出参数);(注:这里帮助下新同学,如果你的存储过程有输出变量,那么在这里只需要加 @ 然后跟任意变量名即可); 即可发现你的变

java 调用mysql的存储过程(简单示例)

首先我在mysql的test数据库里定义了一个student表: create table student4( id   int   primary key, sanme char(5) ); 插入几个数据做测试用: inset into student values(1,'mayi'); inset into student values(2,'mayi'); inset into student values(3,'mayi'); 建立存储过程: in 型: delimiter // cre

c#使用mysql的简单demo

前几天装vs2010的数据库以失败告终,但课程要求使用数据库所以不得不转战mysql,下面就分享下在C#中使用mysql的简单例子. 1 MySqlConnection mysql = new MySqlConnection(mysqlStr);//mysqlStr是连接语句 2 mysql.Open(); 3 MySqlCommand cmd=new MySqlCommand ("sql语句",mysql); 4 5 DataTable dt = new DataTable(); 6

MYSQL中存储过程的创建,调用及语法

MySQL 存储过程是从 MySQL 5.0 开始增加的新功能.存储过程的优点有一箩筐.不过最主要的还是执行效率和SQL 代码封装.特别是 SQL 代码封装功能,如果没有存储过程,在外部程序访问数据库时(例如 PHP),要组织很多 SQL 语句.特别是业务逻辑复杂的时候,一大堆的 SQL 和条件夹杂在 PHP 代码中,让人不寒而栗.现在有了 MySQL 存储过程,业务逻辑可以封装存储过程中,这样不仅容易维护,而且执行效率也高. 第一部分:创建一个简单的无参的存储过程 1 用mysql客户端登入

mysql写存储过程/PHP写和调用存储过程

PHP调用MYSQL存储过程实例 来源: http://blog.csdn.net/ewing333/article/details/5906887 实例一:无参的存储过程 $conn = mysql_connect('localhost','root','root') or die ("数据连接错误!!!"); mysql_select_db('test',$conn); $sql = " create procedure myproce() begin INSERT IN

MySQL 中存储过程的使用

关于 MySQL 的存储过程,我所了解的一些有规模的公司,对于使用存储过程实现业务逻辑都有严格的限制.我这里搜罗了一些资料,结合自身的经验,总结一些自己关于 MySQL 中存储过程使用的认识.由于水平有限,如有纰漏错误,还请多拍砖. 存储过程的优点主要包括以下几点: 1. 性能提高.相对于不使用存储过程来说的,因为存储过程在创建的时候,数据库已经对其进行了一次解析和优化,而后每次调用都不会再次编译,这相对于传统的SQL语句中每次调用都需要编译的情况来说,性能有所提高,存储过程经过编译之后会比单独

mysql 自定义存储过程和触发器

mysql 自定义存储过程和触发器 --存储过程示范 DROP PROCEDURE IF EXISTS PRO_TEST; CREATE PROCEDURE PRO_TEST(IN NUM_IN INT,OUT NUM_OUT INT,INOUT NUM_INOUT) BEGIN //DO ANYTHING YOU WANT END; 参数解释: in : 就是输入参数,输入参数是会被传入到存储过程作为参数使用,改变它的值将不会改变其原本值,相当于是值传递 out: 此为输出参数,在存储过程中为

[转]MYSQL 创建存储过程

MySQL 存储过程是从 MySQL 5.0 开始增加的新功能.存储过程的优点有一箩筐.不过最主要的还是执行效率和SQL 代码封装.特别是 SQL 代码封装功能,如果没有存储过程,在外部程序访问数据库时(例如 PHP),要组织很多 SQL 语句.特别是业务逻辑复杂的时候,一大堆的 SQL 和条件夹杂在 PHP 代码中,让人不寒而栗.现在有了 MySQL 存储过程,业务逻辑可以封装存储过程中,这样不仅容易维护,而且执行效率也高. 一.MySQL 创建存储过程 "pr_add" 是个简单的

一点实例明白mysql数据库存储过程

mysql存储过程: 封装sql: create procedure p1() begin select * from t_news; end $ //mysql存储过程 简单实例 显示存储过程信息:  \G (横向表格采用纵向表格输出) delimiter $  改变执行符号,直到mysql碰到$ 开始执行语句命令 set  names     解决mysql乱码问题  但mysql重启后又还原到以前字符集状态 call 存储过程名字 ()  调用存储过程 参数: create procedu