数据库存储过程

数据库存储过程

MySQL 存储过程是⼀组 预编译的 SQL 语句 ,可以在 MySQL 数据库中 定义和存储 ,并在 需要时执⾏ 。存储过程可

以接受参数、执⾏条件判断、循环、异常处理等操作,使得开发⼈员可以把⼀系列操作组合成⼀个可重复使⽤的单

元,从⽽提⾼代码的复⽤性和可维护性。

存储过程可以在 MySQL 数据库中创建和保存,然后在需要时调⽤。存储过程通常⽤于执⾏复杂的数据操作,例如

数据转换、数据清理、数据分析等。存储过程的执⾏速度通常⽐单个 SQL 语句的执⾏速度更快,因为存储过程是

预编译的,并且可以在多个客户端之间共享。

MySQL 存储过程的语法类似于其他编程语⾔,包括变量定义、条件语句、循环语句、异常处理等。存储过程可以

接受输⼊参数和输出参数,以及返回值。存储过程还可以使⽤游标来处理结果集,并且可以调⽤其他存储过程或函

数。

存储过程保存在mysql.proc表中

创建存储过程:

CREATE PROCEDURE sp_name ([ proc_parameter [,proc_parameter ...]])

其中:proc_parameter : [IN|OUT|INOUT] parameter_name type

其中IN表示输⼊参数,OUT表示输出参数,INOUT表示既可以输⼊也可以输出;param_name表示参数名称;type表示

参数的类型

查看存储过程列表:

SHOW PROCEDURE STATUS\G

调⽤存储过程

CALL sp_name ([ proc_parameter [,proc_parameter ...]])

CALL sp_name

说明:当⽆参时,可以省略"()",当有参数时,不可省"()K

存储过程修改

ALTER语句修改存储过程只能修改存储过程的注释等⽆关紧要的东⻄,不能修改存储过程体,所以要修改存储过程,⽅法

就是删除重建

删除存储过程

DROP PROCEDURE [IF EXISTS] sp_name

存储过程优势

存储过程把经常使⽤的SQL语句或业务逻辑封装起来,预编译保存在数据库中,当需要时从数据库中直接调⽤,省去了编译的过程
提⾼了运⾏速度,同时降低⽹络数据传输量,存储过程相当于独⽴命令可以直接调⽤

1. 提⾼性能

2. 提⾼安全性

3. 提⾼可维护性

4. 提⾼可重⽤性

5. ⽀持事务处理 ACID

存储过程与⾃定义函数的区别

1. 返回值类型不同:⾃定义函数必须返回⼀个值,⽽存储过程可以不返回任何值。

2. 使⽤⽅式不同:⾃定义函数可以在SQL语句中使⽤,如SELECT语句中的函数调⽤,⽽存储过程需要通过CALL语句来调⽤。

3. 事务处理能⼒不同:存储过程可以包含事务处理代码,⽽⾃定义函数不能。

4. 参数传递⽅式不同:⾃定义函数只能通过参数传递来接收输⼊值,并返回计算结果。⽽存储过程可以通过输⼊、输出、输⼊输出三种参数类型来传递参数。

5. 可重⽤性不同:⾃定义函数可以在多个查询中使⽤,⽽存储过程需要单独调⽤

示例

image-20240816200749148

跨数据库执行

image-20240816201920355

计算的存储过程示例

image-20240816204311555

存储过程名为 dorepeat ,它有⼀个参数 n ,并使⽤ REPEAT 循环计算从0到n的总和。最后,存储过程将结果存储

在MySQL⽤户变量 @sum 中。

使⽤ delimiter 命令来指定存储过程的结束符。这是必要的,因为存储过程中包含了多个分号。在存储过程结束

后,使⽤ delimiter 命令将结束符改回分号。

使⽤ CALL 语句调⽤存储过程,并使⽤ SELECT 语句来检索存储在 @sum 中的结果

posted @ 2024-08-16 20:46  hhhaaa12138  阅读(38)  评论(0)    收藏  举报