存储过程学习(一)
在学《数据库》这门课的时候老师讲“过存储过程”这东西,但一直没有自己写过,语法也不熟。现在公司要升级ERP系统了,这任务落在了我一个人身上。前一段时间改写了一部分程序功能但数据库的操作一直都采用在代码中拼接SQL的方式。后来在网上看到说这种方式容易被注入,而且在处理大量数据时效率很低,所以正考虑将之前的操作全部换成存储过程。
这次要处理的表比较简单:
表名 atr_win_m
主要想实现的功能为:
1.根据id_win_b 和 clm_filed字段查询是否有相应记录
2.有则更新,无则插入
3.插入时要调用另一个已经写好的存储过程pr_amt_max_no来生成ID号
4.插入完成后要调用存储过程pr_amt_max_update 更新表atm_max_no中相应的字段值
为简单起见,这里就不列出表atm_max_no和上面两个已经写好的存储过程的详细内容了。
----------------------------------------------------------------------------------------------
遇到了问题:pr_amt_max_no,和pr_amt_max_update这两个存储过程都是用select返回的结果集(虽然里面只包含两三个字段),网上有资料说一个存储过程中不能访问另一个存储过程产生的结果集。
----------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
解决: 看来是不能在这个存储过程中直接进行判断并调用上面两个存储过程了,所以功能做了下修改:
根据id_win_b 和clm_filed字段查询是否有相应记录,有则更新并返回0,无则返回1。然后在CS代码中具体去处理。
存储过程如下:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述