注意:此页面是使用 SQLyog 工具操作数据库。 

 

什么是存储过程?

存储过程是带有 逻辑的 sql 语句,普通的 sql 语句没有条件判断,没有循环,存储过程可以带上流程控制语句(if while)

存储过程特点

1)、执行效率非常快;存储过程是在数据库的服务器端执行的;

2)、移植性很差;不同的数据库,存储过程的语法不一样;

存储过程语法

创建存储过程:

 

mysql 存储过程 中 入参数可以为空 mysql存储过程的参数_赋值

执行(调用)存储过程:

mysql 存储过程 中 入参数可以为空 mysql存储过程的参数_mysql 存储过程 输入参数_02

删除 存储过程:

mysql 存储过程 中 入参数可以为空 mysql存储过程的参数_赋值_03

 

存储过程还可以带有参数:

1、in:表示输入参数,可以向存储过程传递参数;

传入一个员工的 id,根据 id 查询员工的信息:

mysql 存储过程 中 入参数可以为空 mysql存储过程的参数_赋值_04

调用 存储过程,传入参数 id:

 

mysql 存储过程 中 入参数可以为空 mysql存储过程的参数_存储过程_05

 

2、out:表示输出参数,可以从存储过程中返回结果;

mysql 存储过程 中 入参数可以为空 mysql存储过程的参数_存储过程_06

定义一个 会话变量 来接收存储过程 返回的数据,如下所示:

mysql 存储过程 中 入参数可以为空 mysql存储过程的参数_存储过程_07

然后查看 会话变量 的值:

mysql 存储过程 中 入参数可以为空 mysql存储过程的参数_存储过程_08

 

3、inout:表示输入输出参数,既可以输入数据,也可以输出数据;

mysql 存储过程 中 入参数可以为空 mysql存储过程的参数_mysql 存储过程 输入参数_09

定义一个会话变量 num,然后给 num 赋值 20,如下:

 

mysql 存储过程 中 入参数可以为空 mysql存储过程的参数_mysql 存储过程 输入参数_10

调用 存储过程,并传入 num:调用存储过程时,会执行存储过程中的 select num 语句,输出 num 的值为 20;

同时在存储过程中 重新给 num 赋值 200,并作为参数 传出 存储过程;

mysql 存储过程 中 入参数可以为空 mysql存储过程的参数_存储过程_11

查看从 存储过程 中传出的 num 变量的值:

mysql 存储过程 中 入参数可以为空 mysql存储过程的参数_条件判断_12

 

存储过程 还可以带有条件判断

创建带有条件判断的 存储过程: 

mysql 存储过程 中 入参数可以为空 mysql存储过程的参数_mysql 存储过程 输入参数_13

调用 存储过程:

mysql 存储过程 中 入参数可以为空 mysql存储过程的参数_mysql 存储过程 输入参数_14

查看 存储过程返回的值:

mysql 存储过程 中 入参数可以为空 mysql存储过程的参数_赋值_15

 

存储过程 还可以带有循环语句

 创建一个带有 循环语句 的存储过程:

mysql 存储过程 中 入参数可以为空 mysql存储过程的参数_存储过程_16

调用存储过程:

mysql 存储过程 中 入参数可以为空 mysql存储过程的参数_mysql 存储过程 输入参数_17

查看传出参数 的值:

mysql 存储过程 中 入参数可以为空 mysql存储过程的参数_mysql 存储过程 输入参数_18

 

存储过程 还可以将查询结果赋值给变量并传出来

创建一个存储过程,将查询结果赋值给变量,并传出:

mysql 存储过程 中 入参数可以为空 mysql存储过程的参数_mysql 存储过程 输入参数_19

 

调用存储过程:传入参数2,将查询结果赋值给传出变量 result;

mysql 存储过程 中 入参数可以为空 mysql存储过程的参数_存储过程_20

查询 result 的值:

mysql 存储过程 中 入参数可以为空 mysql存储过程的参数_存储过程_21