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

自定义函数

1、概念

函数是为了完成特定功能而存储在数据库中的SQL语句集,一次编译后永久有效

2、自定义函数

MySQL本身提供了一些内置函数,比如聚合函数SUM(),AVG()以及日期时间函数等。但这并不能完全满足开发的需要,有时我们需要一个函数来完成一些复杂功能的实现,因此,我们需要自定义函数来实现。

3、如何使用自定义函数

语法:

CREATEFUNCTION函数名称(参数1数据类型,参数1数据类型,...,参数n 数据类型)RETURNS数据类型-- 函数特征:-- DETERMINSTIC:不确定的-- NO SQL:没有SQL语句,当然也不会修改数据-- READS SQL DATA:只是读取数据,不会修改数据-- MODIFIES SQL DATA:要修改数据-- CONTAINS SQL:包含了SQL语句DETERMINISTIC|NOSQL|READSSQLDATA|MODIFIESSQLDATA|CONTAINSSQL-- 语句块开始BEGIN-- SQL语句集RETURN结果;END

eg:

CREATEFUNCTIONgetMaxDiff()RETURNSDOUBLE(5,2)DETERMINISTICBEGINRETURN(SELECTMAX(score)-MIN(score)FROMscore);END-- 调用函数SELECTgetMaxDiff();

4、循环结构

WHILE循环条件DO--SQL语句集ENDWHILE;REPEAT--SQL语句集UNTIL 循环终止条件ENDREPEAT;标号:LOOP--SQL语句集IF循环终止条件THENLEAVE标号;ENDIF;ENDLOOP;
-- 如果函数存在则删除DROPFUNCTIONIFEXISTSgetTotal;-- 设置分隔符为 //(避免与函数内的分号冲突)DELIMITER//-- 创建函数CREATEFUNCTIONgetTotal(maxNumINT(11))RETURNSINT(11)NOSQLBEGIN-- 声明循环变量 i,初始值为 0DECLAREiINT(11)DEFAULT0;-- 声明累加总和变量 total,初始值为 0DECLAREtotalINT(11)DEFAULT0;-- WHILE 循环:从 0 累加到 maxNumWHILEi<=maxNumDOSETtotal=total+i;-- 累加当前 i 到 totalSETi=i+1;-- i 自增 1ENDWHILE;-- 返回累加结果RETURNtotal;END//-- 恢复默认分隔符为 ;DELIMITER;
http://www.jsqmd.com/news/510579/

相关文章:

  • 图的基本理解
  • ILI9341 RGB接口实战:DE模式 vs SYNC模式全解析(附Arduino配置代码)
  • 瑞芯微RKNN模型转换避坑大全:ONNX算子支持与自定义模型适配经验分享
  • Altium Designer 09 PCB工程实践十大关键操作
  • Z-Image-Turbo-rinaiqiao-huiyewunv 环境配置详解:Anaconda虚拟环境管理
  • 3 分钟看懂:这款开源 AI 无人机平台,凭啥让 500+ 企业抢着买单?
  • 赛诺菲在成都正式启用中国创新与运营中心
  • Stable-Diffusion-v1-5-archive环境部署详解:Supervisor守护机制+异常自动拉起原理
  • 手把手教你用yz-bijini-cosplay生成《原神》《鬼灭》角色Cos图
  • macOS应用兼容新方案:Whisky轻量级跨平台运行工具全指南
  • OpenCore配置工具OCAuxiliaryTools:从配置困境到实战突破的黑苹果解决方案
  • MedGemma X-Ray医疗影像分析:从部署到实战,小白也能轻松上手
  • OpenClaw安全防护方案:GLM-4.7-Flash执行权限沙盒隔离实践
  • Nanbeige 4.1-3B Streamlit WebUI入门必看:3步完成本地沉浸式AI对话环境搭建
  • 微软AD域控建立林之间的DNS条件转发器、域信任、时间同步,最终实现跨域 林之间相互通讯、文件共享等。
  • DynamixelShield库详解:Arduino控制DYNAMIXEL舵机的硬件级解决方案
  • 春节创意不求人:用春联生成模型-中文-base轻松生成个性化春联
  • 史上最全网络安全技术成长路线图:零基础入门至资深专家全阶段指南
  • 7个方法解答:回收站永久删除的文件还能恢复吗?(2026年更新)
  • 无刷电机 FOC 控制量产方案:开启多领域应用新可能
  • 手把手教学:如何用LingBot-Depth生成高质量3D点云数据
  • ESP32嵌入式函数发生器:基于FreeRTOS的实时波形合成引擎
  • 工业仿真是不是智商税?我们厂花 10 万入坑,1 年省了 37 万
  • PPTAgent:重新定义文档转演示文稿的智能创作范式
  • 告别漏洞焦虑!用Dependency-Check命令行3分钟快速扫描JAR包安全风险
  • AI不会取代电商人,但会使用AI的同行会取代你
  • 个人工作室利器:用霜儿汉服模型低成本打造古风视觉内容
  • QwQ-32B开源大模型实战:基于ollama构建教育领域智能助教
  • Spring_couplet_generation 安全加固:防范恶意提示词与生成内容审核
  • 网络安全入门SRC指南:从理论到实战,从零基础到精通,收藏这篇就够了