mysql之存储过程

什么是存储过程

简介

MySQL中存储过程是一组为了完成特定功能的SQL语句集合,经编译和优化后存储在数据库服务器中,以一个指定名称存储。

作用

将常用的多条SQL语句封装在一个集合里直接调用,类似于JAVA中的封装重用

特点

1.封装重用

2.可接收参数也可以返回参数

3.减少数据库和服务器之间的交互,提高效率

存储过程的相关语法

基本语法

CREATE PROCEDURE procedure_name
BEGIN
-- 存储过程的主体
sql_statement;
...
END;

 

存储过程的调用

CALL 存储过程的名称;

查看存储过程

查看特定存储过程的详细信息,可以使用以下命令:

SHOW CREATE PROCEDURE procedure_name;

查看存储过程列表:

SHOW PROCEDURE STATUS;

删除存储过程

Drop PROCEDURE procedure_name;

存储过程的变量

存储过程有三大变量,;用户自定义变量;局部变量

系统变量


系统变量是MySQL服务器预定义的变量,用于配置服务器行为、操作系统信息等。这些变量在MySQL服务器启动时被初始化,并且在运行期间可以修改。

语法示例:

SET @system_variable_name = value;
其中,@system_variable_name 是系统变量的名称,value 是要设置的值。

局部变量

局部变量是在存储过程中定义的临时变量,仅在存储过程内部有效。它们用于存储中间结果或传递参数。关键词:declare

语法示例:

DECLARE variable_name datatype;
其中,variable_name 是局部变量的名称,datatype 是变量的数据类型。

使用示例:SET 变量名称=值

DECLARE num INT;
SET num = 10;
--在这个示例中,我们声明了一个名为 num 的整数类型局部变量,并将其值设置为 10。

用户自定义变量

用户自定义变量是用户根据需要创建的变量,可以存储各种数据类型。这些变量在会话期间有效,并且在会话结束后自动删除。

语法示例:

--语法1
SET @variable_name = value;
--语法2
SELECT value INTO @variable_name;

 

其中,@variable_name 是用户自定义变量的名称,value 是要设置的值。第一个语法使用 SET 语句将值赋给变量,而第二个语法使用 SELECT INTO 将查询结果存储到变量中。

使用示例:

--用法1
SET @name = 'John';

--用法2
SELECT 'John' INTO @name;
--这两个示例都创建了一个名为 @name 的用户自定义变量,并将其值设置为 'John'。

存储过程的参数(IN OUT INOUT)

  1. IN:输入参数,传递给存储过程的值。在存储过程内部,可以使用该参数的值,但不能对其进行修改。
  2. OUT:输出参数,存储过程返回的值。在存储过程内部,可以使用该参数来存储结果,并在存储过程执行完成后返回给调用者。
  3. INOUT:输入/输出参数,既可以作为输入参数传递给存储过程,也可以作为输出参数返回给调用者。

以下是存储过程中参数的语法示例:

CREATE PROCEDURE procedure_name
(
parameter_name_1 parameter_type_1 data_type_1,
parameter_name_2 parameter_type_2 data_type_2,
...
)
BEGIN
-- 存储过程的主体
-- 对于 IN 参数,可以在这里使用 parameter_name_1、parameter_name_2 等来接收传递的值
-- 对于 OUT 参数,可以在这里使用 parameter_name_1、parameter_name_2 等来存储计算结果,并在存储过程执行完成后返回给调用者
-- 对于 INOUT 参数,可以在这里使用 parameter_name_1、parameter_name_2 等来同时接收传递的值和存储计算结果
END;

在调用存储过程时,需要按照存储过程中定义的参数列表和类型传递参数。对于 IN 参数,可以将其值直接传递给存储过程;对于 OUT 参数,存储过程执行完成后会返回一个值;对于 INOUT 参数,既可以将其作为输入参数传递给存储过程,也可以将其作为输出参数接收返回的值。

 

 

 

 

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值