## 存储过程的形参类型
存储过程也允许提供参数(形参和实参):存储的参数也和函数一样,需要指定其类型。
但是存储过程对参数还有额外的要求:自己的参数分类
#### in
表示参数从外部传入到里面使用(过程内部使用):可以是直接数据也可以是保存数据的变量
#### out
表示参数是从过程里面把数据保存到变量中,交给外部使用:传入的必须是变量
如果说传入的out变量本身在外部有数据,那么在进入过程之后,第一件事就是被清空,设为NULL
#### inout
数据可以从外部传入到过程内部使用,同时内部操作之后,又会将数据返还给外部。
语法:
过程名称(形参)
~~~
(过程类型 变量名称 数据类型) //形参写法
~~~
~~~
create procedure hah(in int_1 int,out int_2 int,inout int_3 int)
begin
##查看三个传入进来的数据的值
select int_1,int_2,int_3;
##修改三个变量的值
set int_1 = 10;
set int_2 = 100;
set int_3 = 1000;
select int_1,int_2,int_3;
##查看会话变量
select @n1,@n2,@n3;
##修改会话变量
set @n1 = 'a';
set @n2 = 'b';
set @n3 = 'c';
select @n1,@n2,@n3;
end
$$
~~~
~~~
call show(@n1,@n2,@n3);
~~~
结果: 分析结果:out类型的数据会被清空,其他正常
![](https://box.kancloud.cn/120c9cfbffc72db5031701df4792a1f2_554x375.png)
在执行过程之后,再次查看会话变量(外部)
~~~
+------+------+------+
| @n1 | @n2 | @n3 |
+------+------+------+
| a | 100 | 1000 |
+------+------+------+
~~~
- 数据库介绍
- 数据库基本概念
- SQL介绍
- MySQL服务端架构
- 库操作
- 表操作
- 字段类型
- 整数类型
- 小数类型
- 字符串类型
- 日期/时间类型
- json类型
- 字段属性
- Null
- 默认值
- 列描述
- 主键
- 自动增长
- 唯一键
- 数据库基础操作
- 增
- 删
- 改
- 查
- 运算符
- 算术运算符
- 比较运算符
- 逻辑运算符
- in运算符
- is运算符
- like运算符
- 高级查询
- 联合查询
- 连接查询
- 交叉连接
- 内连接
- 外连接
- Using关键字
- 子查询
- 标量子查询
- 列子查询
- 行子查询
- 表子查询
- exists子查询
- 子查询特定关键字
- 用户权限管理
- 用户管理
- 权限管理
- 外键
- 外键操作
- 外键基本要求
- 约束
- 视图
- 事务安全
- 自动事务
- 手动事务
- 事务特点
- 变量
- 系统变量
- 会话变量
- 局部变量
- 流程结构
- if分支
- while循环
- 函数
- 内置函数
- 字符串函数
- 时间函数
- 数学函数
- 其他函数
- 存储过程
- 与函数的区别
- 存储过程操作
- 存储过程的形参类型
- 触发器
- 触发器概念
- 触发器操作