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

MySQL中如何编写带有循环的函数_MySQL函数流程控制技巧

MySQL函数支持WHILE、REPEAT、LOOP,但需5.7+版本及CREATE ROUTINE权限;log_bin开启时须声明DETERMINISTIC/READS SQL DATA/NO SQL,否则报ERROR 1418。MySQL函数里不能用WHILE或REPEAT?先确认版本和权限MySQL函数确实支持WHILE、REPEAT、LOOP,但前提是:你用的是5.7+(推荐8.0),且当前用户有CREATE ROUTINE权限。常见错误是执行CREATE FUNCTION时报错ERROR 1418,本质不是语法不支持,而是log_bin开启时,MySQL强制要求函数声明为DETERMINISTIC或NO SQL——否则拒绝创建。检查是否启用二进制日志:SHOW VARIABLES LIKE 'log_bin';创建时必须显式声明:DETERMINISTIC(确定性)或READS SQL DATA(只读)或NO SQL(无SQL)临时绕过(仅测试环境):SET GLOBAL log_bin_trust_function_creators = 1;,但生产环境禁用WHILE循环写法:变量初始化和边界控制最容易出错MySQL函数中所有变量必须用DECLARE在BEGIN后第一行声明,且WHILE条件判断依赖的变量必须在循环内主动更新,否则就是死循环。典型现象是调用函数卡住、CPU飙升,或者返回NULL(因超时被中断)。变量必须初始化:DECLARE i INT DEFAULT 1;,不写DEFAULT则初始值为NULL,参与数值比较会全为FALSE循环体里必须修改判断变量:SET i = i + 1;,漏掉这句就无限循环条件建议用而非<code>,避免因步长/初值偏差跳过终止条件DELIMITER $$CREATE FUNCTION sum_to_n(n INT) RETURNS INTREADS SQL DATADETERMINISTICBEGIN DECLARE i INT DEFAULT 1; DECLARE s INT DEFAULT 0; WHILE i <= n DO SET s = s + i; SET i = i + 1; -- 这句不能少 END WHILE; RETURN s;END$$DELIMITER ;REPEAT比WHILE更适合“先执行再判断”的场景当逻辑天然需要至少执行一次(比如解析逗号分隔字符串、逐个提取子串),REPEAT ... UNTIL比WHILE更直白,也更少因初始状态误判导致跳过执行。但要注意UNTIL后的条件是“满足即退出”,语义和WHILE相反,容易写反。 通义听悟 阿里云通义听悟是聚焦音视频内容的工作学习AI助手,依托大模型,帮助用户记录、整理和分析音视频内容,体验用大模型做音视频笔记、整理会议记录。

http://www.jsqmd.com/news/723043/

相关文章:

  • 【大学院-新的可能-新的挑战-新的机缘:生活-搬家细节】
  • 终极指南:如何用DyberPet快速打造你的专属桌面虚拟伙伴
  • Oumuamua-7b-RP开源优势:基于Mistral-7B架构的可解释性与微调友好性
  • 如何每天节省25分钟:淘金币自动化脚本终极指南
  • 电子硅胶厂家有哪些?2026年704硅胶厂家推荐:灯具专用密封胶生产厂家全品类整理 - 栗子测评
  • 企业级Unity资源管理革命:YooAsset完整解决方案
  • 2026 个人站长与开发者云服务器选择指南:性价比 IDC 推荐
  • B站会员购抢票终极指南:如何用开源工具实现300%成功率提升
  • 告别系统依赖:用C++和FreeType库手把手打造你的跨平台字体渲染引擎
  • ThingsBoard数据归档终极指南:如何在合规与业务效率间找到完美平衡
  • 从零到一:如何用开源OnStep系统将普通望远镜升级为智能寻星设备
  • 别再只会让电机转圈了!用STM32+ULN2003A驱动步进电机,实现精准角度控制(附Proteus仿真文件)
  • 算法训练营第十七天|151.翻转字符串里的单词
  • 2026年全国再生资源回收TOP5企业排行一览 - 优质品牌商家
  • 基于安卓的跑步路线记录与挑战平台毕设源码
  • ARM架构ELR_EL2寄存器解析与虚拟化应用
  • Layerdivider:如何快速将单张图片智能分层为可编辑PSD文件?
  • 机器学习滚动轴承故障诊断【附代码】
  • Qwen3-0.6B-FP8效果展示:思维/非思维双模式实测——数学推理与多轮对话对比
  • semi-utils深度解析:高效的批量图片处理自动化方案
  • 基于安卓的音乐创作与翻唱分享社区毕业设计
  • OpCore Simplify:让黑苹果配置从复杂到简单的智能助手
  • Linux初学——更改SELinux强制模式
  • 开源虚拟数字人构建指南:从语音识别到3D渲染的全栈实践
  • 使用 PI 预装载处理永磁同步电机二次起步异响
  • Jmeter脚本参数化和正则匹配
  • 实战还原 V bytenode 保护 JS(V 字节码分析记录)
  • real-anime-z开源贡献指南:如何提交LoRA微调模型与提示词优化PR
  • 成都防水补漏技术分享:靠谱品牌的硬核判定推荐 - 优质品牌商家
  • ghostty终端主题和文件