mysql中存储过程调用_mysql 存储过程使用方法

来源:这里教程网 时间:2026-02-28 20:28:04 作者:

在 MySQL 中,存储过程(Stored Procedure)是一组预编译的 SQL 语句集合,可以接收参数、执行逻辑操作并返回结果。调用存储过程使用 CALL 语句。下面详细介绍如何创建和调用 MySQL 存储过程,并给出实用示例。

创建存储过程

使用 CREATE PROCEDURE 语句定义一个存储过程。你可以指定输入、输出或输入/输出参数。

示例:创建一个根据用户 ID 查询用户信息的存储过程

DELIMITER //
CREATE PROCEDURE GetUserById(IN user_id INT)
BEGIN
    SELECT * FROM users WHERE id = user_id;
END //
DELIMITER ;

说明:
- IN user_id INT:表示输入参数,调用时需传入值。
- DELIMITER //:更改语句结束符,避免内部的分号提前结束定义。

调用存储过程

使用 CALL 语句执行已创建的存储过程。

示例:调用上面创建的 GetUserById 存储过程

CALL GetUserById(1);

这将查询 users 表中 id 为 1 的记录。

带输出参数的存储过程

存储过程也可以返回输出值,适用于需要获取计算结果或状态的场景。

示例:统计某个状态的用户数量

DELIMITER //
CREATE PROCEDURE CountUsersByStatus(
    IN status_val TINYINT,
    OUT user_count INT
)
BEGIN
    SELECT COUNT(*) INTO user_count FROM users WHERE status = status_val;
END //
DELIMITER ;

调用方式:

CALL CountUsersByStatus(1, @count);
SELECT @count AS total_active_users;

注意: 输出参数必须通过用户变量(如 @count)接收,之后可用 SELECT 查看结果。

带输入输出参数的存储过程

MySQL 还支持 INOUT 参数,调用时传入初始值,过程可修改其值并返回。

示例:将传入数值翻倍

DELIMITER //
CREATE PROCEDURE DoubleNumber(INOUT num INT)
BEGIN
    SET num = num * 2;
END //
DELIMITER ;

调用方式:

SET @value = 5;
CALL DoubleNumber(@value);
SELECT @value; -- 返回 10

基本上就这些。掌握 CALL 语句和参数类型(IN、OUT、INOUT),就能灵活使用 MySQL 存储过程提升代码复用性和执行效率。不复杂但容易忽略细节,比如分隔符设置和变量定义。

相关推荐

热文推荐