提交 4c04e9d3 编写于 作者: 彭世瑜's avatar 彭世瑜

fix

上级 575bdb0d
......@@ -2,15 +2,15 @@
视频地址:[https://www.bilibili.com/video/BV18x411H7qD](https://www.bilibili.com/video/BV18x411H7qD)
[PHP 基础](blog/php-basic/basic.md)
1. [PHP 基础](blog/php-basic/basic.md)
[PHP 环境配置](blog/php-basic/environment.md)
2. [PHP 环境配置](blog/php-basic/environment.md)
[PHP 变量和常量](blog/php-basic/variable.md)
3. [PHP 变量和常量](blog/php-basic/variable.md)
[PHP 数据类型](blog/php-basic/type.md)
4. [PHP 数据类型](blog/php-basic/type.md)
[PHP 运算符 operator](blog/php-basic/operator.md)
5. [PHP 运算符 operator](blog/php-basic/operator.md)
[PHP 流程控制](blog/php-basic/process.md)
......
......@@ -108,4 +108,104 @@ call my_pro2();
drop procedure 过程名;
```
https://www.bilibili.com/video/BV1Vx411g7uJ?p=74&spm_id_from=pageDriver
## 3、存储过程的形参类型
存储过程的参数和函数一样,需要制定其类型
但是存储过程对参数还有额外的要求,自己的参数分类
- in:(值传递)参数从外部传入,在过程内部使用,可以是直接数据,也可以是保存数据的变量
- out:(引用传递)参数在过程中赋值,传入必须是变量,如果有外部数据,会被清空为null
- inout:(引用传递)数据可以从外部传入过程内部使用,同时内部操作之后,又回将数据返回给外部
代码示例
```sql
-- 创建3个会话变量
set @var1 = 1;
set @var2 = 2;
set @var3 = 3;
-- 查询会话变量
select @var1, @var2, @var3;
+-------+-------+-------+
| @var1 | @var2 | @var3 |
+-------+-------+-------+
| 1 | 2 | 3 |
+-------+-------+-------+
1 row in set (0.00 sec)
-- 修改语句结束符
delimiter $$
-- 定义过程
create procedure my_pro3(in a int, out b int, inout c int)
begin
-- 查看传入的3个数据值
select a, b, c;
-- +------+------+------+
-- | a | b | c |
-- +------+------+------+
-- | 1 | NULL | 3 |
-- +------+------+------+
-- 修改3个变量值
set a = 10;
set b = 20;
set c = 30;
select a, b, c;
-- +------+------+------+
-- | a | b | c |
-- +------+------+------+
-- | 10 | 20 | 30 |
-- +------+------+------+
-- 查看会话变量
select @var1, @var2, @var3;
-- +-------+-------+-------+
-- | @var1 | @var2 | @var3 |
-- +-------+-------+-------+
-- | 1 | 2 | 3 |
-- +-------+-------+-------+
-- 修改会话变量
set @var1 = 'a';
set @var2 = 'b';
set @var3 = 'c';
select @var1, @var2, @var3;
-- +-------+-------+-------+
-- | @var1 | @var2 | @var3 |
-- +-------+-------+-------+
-- | a | b | c |
-- +-------+-------+-------+
end
$$
delimiter ;
-- 调用过程
call my_pro3(@var1, @var2, @var3);
-- 再次查看会话变量
mysql> select @var1, @var2, @var3;
+-------+-------+-------+
| @var1 | @var2 | @var3 |
+-------+-------+-------+
| a | 20 | 30 |
+-------+-------+-------+
```
分析:
1、实参传入过程之后,实际上没有改变外部变量的值,而是把值给了形参,out类型不能接收外部变量的值,默认为null
2、当过程执行到end 的时候,如果是out或inout变量,会将形参的值重新赋值给实参变量
https://www.bilibili.com/video/BV1Vx411g7uJ?p=75&spm_id_from=pageDriver
\ No newline at end of file
......@@ -83,6 +83,8 @@
[ScrollReveal](https://scrollrevealjs.org/)
[preactjs](https://preactjs.com/)Fast 3kB alternative to React with the same modern API.
## CDN
[BootCDN](https://www.bootcdn.cn/): 稳定、快速、免费的前端开源项目 CDN 加速服务
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册