MySQL中存储函数建立及查看的方法

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

MySQL中存储函数建立及查看的方法

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 $$ <p>CREATE FUNCTION add_numbers(a INT, b INT) RETURNS INT DETERMINISTIC BEGIN DECLARE result INT; SET result = a + b; RETURN result; END$$</p><p>DELIMITER ;</p>                     <div class="aritcle_card">                         <a class="aritcle_card_img" href="/ai/1146">                             <img src="https://img.php.cn/upload/ai_manual/000/000/000/175680088775482.png" alt="存了个图">                         </a>                         <div class="aritcle_card_info">                             <a href="/ai/1146">存了个图</a>                             <p>视频图片解析/字幕/剪辑,视频高清保存/图片源图提取</p>                             <div class="">                                 <img src="/static/images/card_xiazai.png" alt="存了个图">                                 <span>17</span>                             </div>                         </div>                         <a href="/ai/1146" class="aritcle_card_btn">                             <span>查看详情</span>                             <img src="/static/images/cardxiayige-3.png" alt="存了个图">                         </a>                     </div>                 

之后可在查询中使用:

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 复用性和逻辑封装的有效手段,合理使用能简化复杂查询。

暂无评论

发送评论 编辑评论


				
上一篇
下一篇
text=ZqhQzanResources