什么是存储过程
简介
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)
IN
:输入参数,传递给存储过程的值。在存储过程内部,可以使用该参数的值,但不能对其进行修改。OUT
:输出参数,存储过程返回的值。在存储过程内部,可以使用该参数来存储结果,并在存储过程执行完成后返回给调用者。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
参数,既可以将其作为输入参数传递给存储过程,也可以将其作为输出参数接收返回的值。