禁止使用存储过程
优质博文IT-BLOG-CN灵感来源什么是存储过程存储过程Stored Procedure是指为了完成特定功能的SQL语句集经编译后存储在数据库中用户可通过指定存储过程的名字并给定参数如果该存储过程带有参数来调用执行。存储过程在数据库技术中属于一种服务端编程方式是一组预编译的SQL语句集常用于对数据库进行操作、控制和管理。存储过程通常包括流程控制语句、数据操作语句、变量的定义和赋值、条件判断语句等可以在执行过程中接受参数输入并返回查询结果。不推荐的原因【1】存储过程的所有逻辑都是在数据库层面导致代码后续的可维护性下降【2】存储过程可能会包含复杂的业务逻辑会导致数据库的负载增加影响数据库的性能【3】互联网的数据库由数据库部门专门管理和维护开发任务无法直接访问数据库。当将业务逻辑写在数据库中时后续对业务进行修改和维护时就需要同步升级存储过程。影响业务逻辑的维护性。【4】存储过程的本身是比较难以调试和测试的所有对于后续的维护也不是很方便。【5】数据库迁移困难如果需要从一种数据库迁移到另一种数据库例如从Oracle迁移到MySQL存储过程可能需要重写这会带来大量的工作量和风险。【6】管理困难随着存储过程的增多管理可能会变得非常混乱给维护工作带来极大的不便。【7】分布式场景的问题在分布式场景下存储过程可能无法很好地处理数据分片的问题。例如水平分表的情况下存储过程可能无法处理所有数据的分析结果。适合存储的场景存储过程的特点存储过程具有以下几个特点【1】封装性存储过程是由SQL语句和控制语句组成的过程它们被封装在一起形成了一个独立的对象这样可以方便客户端应用程序调用。【2】可重用性存储过程可以被多个客户端应用程序重复使用因为它们是预编译的可以在多个应用程序之间共享。【3】可编程性存储过程是可编程的可以由用户通过SQL语句和控制结构来定义和修改从而实现对数据库的操作。【4】安全性存储过程是在数据库中创建和保存的因此可以增加数据库的安全性。只有受权的用户才能调用存储过程避免了SQL注入攻击等安全问题。适合的场景像银行这类系统通常会采用商用的数据库Oracle、DB2等应为这些供应商有着完整的解决方案可以帮助银行规避大量的风险。银行的一些外围业务会使用一些国产的分布式数据库或者MySQL这样开源的数据库。银行是以数据为核心且早期银行在建设业务的时候没有好的国产数据库所以采采购了Oracle、DB2这样有成功经验的的数据库。且每套数据库都有着自己的一套存储过程开发方式只要掌握了存储过程的开发技巧对数据的交互过程是没有问题的对于前端使用go、java、c才是第二关心得问题。存储过程的语法DELIMITER // #将语句的结束符号从分号;临时改为两个//(可以是自定义) CREATE PROCEDURE CalculateSquare(IN num INT, OUT result INT) # CREATEPROCEDURE 存储过程名([[IN |OUT |INOUT ] 参数名 数据类形...]) BEGIN SET result num * num; END // DELIMITER ; #将语句的结束符号恢复为分号【1】DELIMITER用于更改命令结束符以便在存储过程中使用BEGIN ... END语句。通常我们使用//作为新的结束符并在存储过程定义结束后将其改回;。【2】CREATE PROCEDURE用于创建新的存储过程。【3】CalculateSquare是存储过程的名称。【4】(IN num INT, OUT result INT)定义了输入和输出参数。在这个例子中num是一个输入参数result是一个输出参数。【5】BEGIN ... END之间的部分是存储过程的主体即要执行的SQL语句。调用存储过程要调用上述存储过程并获取结果你需要使用CALL语句并指定一个变量来接收输出参数的值SET input 5; SET output 0; CALL CalculateSquare(input, output); SELECT output; -- 输出应该是 25MyBatis调用存储过程【1】Mapper.xml文件的使用方式!-- 删除-无参 -- delete idcleanStored statementTypeCALLABLE {call bcjs_clean} /delete !-- 计算-有参 -- select idimplementStorage statementTypeCALLABLE parameterTypecom.meditrusthealth.fast.isip.web.request.actuary.ActuaryVersionReq {call bcjs_cal(#{projectId},#{userId},#{versionId})} /select【2】注解方式public interface LrMonitorConcentrationMapper extends BaseMapperLrMonitorConcentration { Select({call setValueIsNotNull(#{format})}) Options(statementType StatementType.CALLABLE) void implementStorage(String format); }

相关新闻

私有化部署DeepSeek并SpringBoot集成使用(附UI界面使用教程-支持语音、图片)

私有化部署DeepSeek并SpringBoot集成使用(附UI界面使用教程-支持语音、图片)

私有化部署DeepSeek并SpringBoot集成使用(附UI界面使用教程-支持语音、图片) windows部署ollama Ollama 是一个开源框架,专为在本地机器上便捷部署和运行大型语言模型(LLM)而设计 下载ollama 下载地址(…

2026/7/3 1:54:42 阅读更多 →
【C语言-第34章 字符与字符串的输入输出】-002篇

【C语言-第34章 字符与字符串的输入输出】-002篇

文章目录 第34章 字符与字符串的输入输出 34.1 getchar与putchar getchar函数 putchar函数 基本用法示例 常见应用场景 34.2 gets与puts(了解安全性问题) puts函数 gets函数 - **危险!已废弃!** gets的安全替代方案 34.3 安全的字符串输入 1. 使用fgets进行安全输入 2. 安全…

2026/7/3 17:36:55 阅读更多 →
基于Java+SSM+Flask商务网站(源码+LW+调试文档+讲解等)/C2C商务网站/电商平台/在线交易/网上商城/买家卖家/二手交易/拍卖网站/个人网店/在线商务/电子商务。

基于Java+SSM+Flask商务网站(源码+LW+调试文档+讲解等)/C2C商务网站/电商平台/在线交易/网上商城/买家卖家/二手交易/拍卖网站/个人网店/在线商务/电子商务。

博主介绍 💗博主介绍:✌全栈领域优质创作者,专注于Java、小程序、Python技术领域和计算机毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 2025-2026年最新1000个热门Java毕业设计选题…

2026/7/2 20:12:42 阅读更多 →

最新新闻

ChatGPT插件API密钥安全管理实战:从架构设计到自动化轮换

ChatGPT插件API密钥安全管理实战:从架构设计到自动化轮换

1. 项目概述:为什么ChatGPT插件密钥安全是生死线最近在折腾各种AI工具和插件,发现一个挺普遍但又被很多人忽视的问题:ChatGPT插件的API密钥管理。无论是自己开发插件,还是使用别人的,密钥泄露的风险都像悬在头顶的达摩…

2026/7/4 22:52:53 阅读更多 →
基于YOLOv8-seg的高精度道路缺陷检测系统开发

基于YOLOv8-seg的高精度道路缺陷检测系统开发

1. 项目背景与核心价值道路缺陷检测是智慧交通和市政养护领域的关键技术痛点。传统人工巡检方式存在效率低、漏检率高、主观性强等问题,尤其在夜间或恶劣天气条件下表现更差。我们团队基于YOLOv8-seg框架,融合EfficientRepBiPAN、AFPN-P345等50余项创新改…

2026/7/4 22:50:52 阅读更多 →
AI技术决策指南:从信息过载到可执行落地

AI技术决策指南:从信息过载到可执行落地

1. 项目概述:一份AI领域 Newsletter 的真实价值拆解“This AI newsletter is all you need #60”——看到这个标题,你第一反应可能是:又一份泛泛而谈的AI资讯合集?点开就看三行摘要、五个链接、一个ChatGPT新插件预告,…

2026/7/4 22:46:48 阅读更多 →
TC78H660FTG与PIC18F86J10的直流电机驱动优化方案

TC78H660FTG与PIC18F86J10的直流电机驱动优化方案

1. 项目背景与核心器件选型在工业自动化和消费电子领域,直流电机驱动系统的效率优化一直是工程师面临的关键挑战。TC78H660FTG作为东芝新一代H桥驱动器,与Microchip的PIC18F86J10微控制器组合,为解决这一问题提供了高性价比方案。TC78H660FTG…

2026/7/4 22:46:48 阅读更多 →
AntiDupl终极指南:三步快速清理重复照片,释放磁盘空间

AntiDupl终极指南:三步快速清理重复照片,释放磁盘空间

AntiDupl终极指南:三步快速清理重复照片,释放磁盘空间 【免费下载链接】AntiDupl A program to search similar and defect pictures on the disk 项目地址: https://gitcode.com/gh_mirrors/an/AntiDupl AntiDupl是一款专业的开源图片去重工具&a…

2026/7/4 22:42:44 阅读更多 →
基于STM32和MAX9744的高效D类音频放大器设计

基于STM32和MAX9744的高效D类音频放大器设计

1. 项目背景与核心器件选型在音频系统设计中,功率放大环节直接决定了最终的声音表现。传统AB类放大器虽然音质优秀,但效率普遍低于50%,导致发热严重、能耗高。而D类放大器采用PWM调制技术,理论效率可达90%以上,特别适合…

2026/7/4 22:40:42 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻