使用CREATE PROCEDURE语句创建存储过程,可封装重复sql逻辑;2. 通过DELIMITER更改结束符避免解析错误;3. 支持IN、OUT、INOUT参数类型,实现输入输出功能;4. 调用使用CALL语句,配合变量获取输出结果。

在mysql中创建存储过程可以通过CREATE PROCEDURE语句实现,它允许你封装一段可重复使用的SQL逻辑。掌握存储过程的创建方法,有助于提高数据库操作效率和代码复用性。
基本语法结构
创建存储过程的基本语法如下:
CREATE PROCEDURE 存储过程名(参数列表) BEGIN -- sql语句 END;
其中,参数列表可为空,也可以包含IN(输入)、OUT(输出)或INOUT(输入输出)类型的参数。
无参存储过程示例
例如,创建一个查询所有用户信息的存储过程:
DELIMITER // CREATE PROCEDURE GetAllUsers() BEGIN SELECT * FROM users; END // DELIMITER ;
注意:使用DELIMITER //是为了将语句结束符从分号;临时更改为//,避免MySQL过早解析BEGIN...END中的分号。
带参数的存储过程
你可以为存储过程添加参数。比如创建一个根据用户ID查询信息的过程:
本书全面介绍PHP脚本语言和MySOL数据库这两种目前最流行的开源软件,主要包括PHP和MySQL基本概念、PHP扩展与应用库、日期和时间功能、PHP数据对象扩展、PHP的mysqli扩展、MySQL 5的存储例程、解发器和视图等。本书帮助读者学习PHP编程语言和MySQL数据库服务器的最佳实践,了解如何创建数据库驱动的动态Web应用程序。
385
DELIMITER // CREATE PROCEDURE GetUserById(IN user_id INT) BEGIN SELECT * FROM users WHERE id = user_id; END // DELIMITER ;
调用方式为:CALL GetUserById(1);,即可查询id为1的用户。
带有输出参数的存储过程
如果需要返回计算结果,可以使用OUT参数:
DELIMITER // CREATE PROCEDURE GetUserCount(OUT total INT) BEGIN SELECT COUNT(*) INTO total FROM users; END // DELIMITER ;
调用并查看结果:
CALL GetUserCount(@count); SELECT @count;
基本上就这些。只要理解参数类型和语句分隔符的使用,创建MySQL存储过程并不复杂,但容易忽略细节导致语法错误。