存储函数用于封装SQL逻辑并返回值,可重用且支持SELECT调用。创建使用CREATE FUNCTION,包含名称、参数、返回类型及函数体,需RETURN值。示例add_numbers返回两数之和。可通过SHOW FUNCTION STATUS、SHOW CREATE FUNCTION或information_schema.Routines查看函数信息。注意:函数体必须有RETURN,避免修改数据除非声明MODIFIES SQL DATA,使用DELIMITER防止分号冲突,重复命名需先删除。合理使用提升查询复用性与逻辑封装。

在 MySQL 中,存储函数(Stored Function)是一种可重用的数据库对象,用于封装一段 SQL 逻辑并返回一个值。它可以在 SELECT、WHERE 或其他表达式中调用,适合用于计算或数据处理。
创建存储函数的方法
使用 CREATE FUNCTION 语句来定义存储函数。基本语法如下:
CREATE FUNCTION function_name(param_list)RETURNS data_type[DETERMINISTIC | NOT DETERMINISTIC][READS SQL DATA | MODIFIES SQL DATA | CONTAINS SQL][COMMENT 'description']BEGIN -- 函数体:声明变量、控制结构、SQL 语句等 RETURN value;END;
关键要素说明:
function_name:函数名称,需唯一于数据库内。param_list:参数列表,仅支持 IN 参数,不支持 OUT 或 INOUT。RETURNS:指定返回值的数据类型,如 INT、VARCHAR 等。DETERMINISTIC:表示相同输入是否总是产生相同输出,优化器会参考此属性。READS SQL DATA:表明函数从表中读取数据(默认选项之一)。BEGIN … END:函数体的开始与结束,内部包含逻辑处理和 RETURN 语句。
示例:创建一个计算两个数之和的函数
DELIMITER $$CREATE FUNCTION add_numbers(a INT, b INT)RETURNS INTDETERMINISTICBEGINDECLARE result INT;SET result = a + b;RETURN result;END$$
DELIMITER ;
动态WEB网站中的PHP和MySQL:直观的QuickPro指南第2版查看详情动态WEB网站中的PHP和MySQL详细反映实际程序的需求,仔细地探讨外部数据的验证(例如信用卡卡号的格式)、用户登录以及如何使用模板建立网页的标准外观。动态WEB网站中的PHP和MySQL的内容不仅仅是这些。书中还提到如何串联JavaScript与PHP让用户操作时更快、更方便。还有正确处理用户输入错误的方法,让网站看起来更专业。另外还引入大量来自PEAR外挂函数库的强大功能,对常用的、强大的包
508
![]()
之后可在查询中使用:
SELECT add_numbers(5, 3); -- 输出 8
查看存储函数的方法
可以通过以下几种方式查看已创建的存储函数:
查看当前数据库中的所有函数: SHOW FUNCTION STATUS WHERE Db = DATABASE();
该命令列出当前数据库下的函数及其状态信息,如名称、类型、创建时间等。 查看特定函数的创建语句: SHOW CREATE FUNCTION function_name;
显示函数的完整定义,便于调试或迁移。 从 information_schema.Routines 查询: SELECT ROUTINE_NAME, ROUTINE_TYPE, CREATED, LAST_ALTERED FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ‘your_database_name’ AND ROUTINE_TYPE = ‘FUNCTION’;
适用于跨数据库查询或程序化获取元数据。
注意事项
函数体内必须包含 RETURN 语句,否则执行时报错。函数不能修改表数据(即不能有 INSERT、UPDATE、DELETE),除非声明为 MODIFIES SQL DATA,但此类函数无法在某些上下文中使用(如视图中)。使用 DELIMITER 更改语句结束符,避免函数体内的分号提前结束语句。若函数名已存在,需先用 DROP FUNCTION [IF EXISTS] function_name; 删除后再创建。
基本上就这些。创建和查看存储函数是提升 SQL 复用性和逻辑封装的有效手段,合理使用能简化复杂查询。
以上就是MySQL中存储函数建立及查看的方法的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/952299.html
微信扫一扫
支付宝扫一扫