数据库存储过程
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. 可重⽤性不同:⾃定义函数可以在多个查询中使⽤,⽽存储过程需要单独调⽤
示例
跨数据库执行
计算的存储过程示例
存储过程名为 dorepeat ,它有⼀个参数 n ,并使⽤ REPEAT 循环计算从0到n的总和。最后,存储过程将结果存储
在MySQL⽤户变量 @sum 中。
使⽤ delimiter 命令来指定存储过程的结束符。这是必要的,因为存储过程中包含了多个分号。在存储过程结束
后,使⽤ delimiter 命令将结束符改回分号。
使⽤ CALL 语句调⽤存储过程,并使⽤ SELECT 语句来检索存储在 @sum 中的结果
标签:语句,存储,name,proc,数据库,参数,过程 From: https://www.cnblogs.com/zgw03/p/18363607