当前位置: 首页 > news >正文

MYSQL学习8 MYSQL存储函数

忘れない いつまでも忘れない

存储函数

基本操作

创建存储函数

DELIMITER $$
CREATE FUNCTION function_name (param_name type [, ...])
RETURNS return_type
[characteristic ...]
BEGIN-- 函数体 SQL 语句RETURN value;
END;
DELIMITER ;

function_name‌:函数名称,不能与内置函数同名。
param_name type‌:输入参数列表,只需指定参数名和类型。
RETURNS return_type‌:指定返回值的数据类型。
characteristic‌:可选特性,如DETERMINISTICREADS SQL DATASQL SECURITY DEFINER等。
routine_body‌:函数主体,包含具体的SQL逻辑,必须以RETURN语句结束。

常见特性:

DETERMINISTIC / NOT DETERMINISTIC‌:

DETERMINISTIC:相同输入始终产生相同输出(如数学计算)。
NOT DETERMINISTIC:相同输入可能产生不同输出(如涉及当前时间或随机数)。默认为NOT DETERMINISTIC

SQL 数据访问限制‌:

CONTAINS SQL:包含 SQL 语句,但不读写数据(默认)。
NO SQL:不包含 SQL 语句。
READS SQL DATA:包含读取数据的语句(如 SELECT),但不修改数据。
MODIFIES SQL DATA:包含修改数据的语句(如 INSERT, UPDATE)。

SQL SECURITY‌:

DEFINER:以定义者的权限执行(默认)。
INVOKER:以调用者的权限执行。

调用存储函数

SELECT function_name(arguments);

删除存储函数

DROP FUNCTION [IF EXISTS] function_name;

示例1 简单计算函数:

DELIMITER $$
CREATE FUNCTION add_numbers(a INT, b INT) 
RETURNS INT
DETERMINISTIC
BEGINRETURN a + b;
END$$
DELIMITER ;

示例2 查询名字并返回

DELIMITER $$
CREATE FUNCTION get_user_name(in_id INT) 
RETURNS VARCHAR(50)
READS SQL DATA
BEGINDECLARE out_name VARCHAR(50);SELECT name INTO out_name FROM tb_user WHERE id = in_id;RETURN out_name;
END$$
DELIMITER ;
http://www.jsqmd.com/news/670968/

相关文章:

  • 3分钟搞定暗黑破坏神2存档修改:d2s-editor终极使用指南
  • Unity团队协作效率翻倍:手把手教你用CacheServer解决资源导入卡顿问题
  • Spark 4.0 深度解析:从“大数据计算引擎“正式进化为 “现代云原生数据平台“(2026 最新,附完整代码)
  • 用Apktool和AssetStudio拆解Unity手游资源:一份给游戏开发者的逆向分析入门指南
  • AI时代品牌传播优选:快易播GEO发稿平台,解锁高效信源传播新路径 - 新闻快传
  • Delphi Indy组件HTTPS通信保姆级教程:从IdHTTP控件配置到SSL版本(TLSv1.2)匹配全流程
  • PullZoomView:Android下拉缩放库完全指南,打造惊艳用户体验
  • 终极指南:Golang系统编程中系统调用与VDSO的完整实现解析
  • 告别虚拟机!用一台M1 Mac搞定iOS应用安装:iTunes旧版提取IPA包全攻略
  • 终极指南:Lilishop商城中Elasticsearch搜索优化的5个实用技巧
  • 3D-ResNets-PyTorch性能优化指南:10个实用技巧加速动作识别模型训练
  • 告别臃肿模拟器:APK Installer让你的Windows电脑秒变安卓设备
  • 抖音直播自动录制工具完整指南:24小时智能监控与多平台录制终极方案
  • FireRed-OCR Studio应用场景:航空维修手册PDF故障树结构化建模
  • 新手避坑指南:用Docker快速搭建CTFHub同款RCE练习环境(附完整复现步骤)
  • 选购水处理公司要注意什么,看看湖南乐浪水处理科技有限公司口碑 - mypinpai
  • R 4.5并行计算瓶颈诊断全流程,深度解析future::plan()、doParallel与BiocParallel的调度差异及内存泄漏定位技巧
  • 终极指南:如何利用PINRemoteImage实现弱网络环境下的渐进式图片加载与模糊效果优化
  • 有实力的水处理公司盘点,乐浪水处理行业口碑排名如何揭秘 - 工业品网
  • Android布局优化避坑指南:为什么你的<include>和<ViewStub>用错了反而更卡?
  • 别再傻傻分不清!BIOS里的SCI、SMI和IRQ到底啥区别?用大白话给你讲明白
  • Vivado时序约束实战:用set_multicycle_path解决跨时钟域数据采集难题
  • ShapeNetCore.v2 vs ShapeNetSem:3D视觉研究,你的项目该选哪个数据集?
  • Performance-Fish实战:重构《环世界》400%性能突破的底层逻辑
  • Zotero-SciHub插件:智能文献获取的完全实战指南
  • 开源像素艺术终端落地实操:像素幻梦·创意工坊企业级AI绘图方案
  • 别再只盯着算力了!实测Tesla K20c与Quadro K620混搭:聊聊专业卡的‘供电模式’与真实应用场景
  • HG-ha/MTools环境部署:Linux服务器上CUDA GPU加速配置全记录
  • Turbo-rails完整指南:10分钟学会为Rails应用提速500%
  • 2026年可靠的玻璃钢厂家推荐,细聊远科玻璃钢行业地位与生产能力 - 工业设备