diff --git a/README.md b/README.md index 8ca8ab0bda87c342e121dcbdebbc5e287dfdc8e0..3da4210ce338f9e85454ff0011b52c405399cb1d 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ - 国内镜像:https://mouday.gitee.io/coding-tree/ +![](https://weixin.sogou.com/weixin?type=1&s_from=input&query=Python%E4%BC%98%E9%80%89) + ## 前言 学习的过程,就像是培育一个树苗 diff --git a/blog/php-basic/variable.md b/blog/php-basic/variable.md index 48eec690c330dda79809e1f07fb760defb75ee95..14b002a3b23fe028c45e6c5cf84f91992c78d926 100644 --- a/blog/php-basic/variable.md +++ b/blog/php-basic/variable.md @@ -2,7 +2,7 @@ ## PHP 基本语法 -PHP 是一种运行在服务器端的脚本于洋,可以嵌入到 HTML 中 +PHP 是一种运行在服务器端的脚本语言,可以嵌入到 HTML 中 1、PHP 代码标记 diff --git a/blog/php-mysql/index.md b/blog/php-mysql/index.md index 881ebb3ede47d5170b3b5fdcaacd2032d2549ac2..d3de127fa074f125b5f2e9423762a63135c74ff3 100644 --- a/blog/php-mysql/index.md +++ b/blog/php-mysql/index.md @@ -61,3 +61,5 @@ [流程结构 if while](blog/php-mysql/sql-if-while.md) [函数 function](blog/php-mysql/sql-function.md) + +[存储过程 procedure](blog/php-mysql/sql-procedure.md) diff --git a/blog/php-mysql/sql-function.md b/blog/php-mysql/sql-function.md index 34121916ca2c95f323bb4248f58df83b30a7073f..e87b18a0d5076879394b5e211e7b9b89d947edf6 100644 --- a/blog/php-mysql/sql-function.md +++ b/blog/php-mysql/sql-function.md @@ -347,6 +347,3 @@ delimiter ; -- 实参个数必须等于形参个数 select my_sum(10); ``` - - -https://www.bilibili.com/video/BV1Vx411g7uJ?p=72&spm_id_from=pageDriver \ No newline at end of file diff --git a/blog/php-mysql/sql-procedure.md b/blog/php-mysql/sql-procedure.md new file mode 100644 index 0000000000000000000000000000000000000000..373b7355b6c4d2e2216cd602d89f42da2d2d2bc3 --- /dev/null +++ b/blog/php-mysql/sql-procedure.md @@ -0,0 +1,111 @@ +# 存储过程 + +stored procedure 完成特定功能的SQL语句集,存储在数据库中,经过第一次编译之后再次调用不需要编译(效率较高) + +## 1、存储过程与函数的区别 + +### 1.1、相同点 + +1. 都是为了可重复地执行操作数据库的SQL语句集合 +2. 都是一次编译,多次执行 + +### 1.2、不同点 + +1. 标识符不同,函数function 过程 procedure +2. 函数中有返回值,且必须返回,而过程没有返回值 +3. 过程无返回值类型,不能将结果直接赋值给变量;函数有返回值类型,调用时,除了在select中,必须将返回值赋值给变量 +4. 函数可以再select语句中直接使用,而过程不能 + + +## 2、存储过程的操作 + +### 2.1、创建过程 + +基本语法 + +```sql +create procedure 过程名字([参数列表]) +bengin + 过程体 +end +结束符 +``` + +如果只有只有一条指令可以省略begin和end + +```sql +create procedure my_pro1() +select * from my_student; +``` + +过程基本上可以完成函数对应的所有功能 + +```sql + +-- 修改语句结束符 +delimiter $$ +-- 创建过程 +create procedure my_pro2() +begin + -- 求1到100之间的和 + + -- 创建局部变量 + declare i int default 1; + -- declare sum int default 0; + + -- 会话变量 + set @sum = 0; + + -- 开始循环获取结果 + while i <= 100 do + -- 求和 + set @sum = @sum + i; + set i = i + 1; + end while; + + -- 显示结果 + select @sum; + +end +$$ +delimiter ; +``` + +### 2.2、查看过程 + +```sql +-- 查看所有存储过程 +show procedure status [like 'pattern']; + +-- 查看过程的创建语句 +show create procedure 过程名字\G +``` + +### 2.3、调用过程 + +过程没有返回值 + +基本语法 + +```sql +call 过程名([实参列表]); + +-- eg: +call my_pro2(); ++------+ +| @sum | ++------+ +| 5050 | ++------+ +``` + + +### 2.4、删除过程 + +基本语法 + +```sql +drop procedure 过程名; +``` + +https://www.bilibili.com/video/BV1Vx411g7uJ?p=74&spm_id_from=pageDriver