存储过程真的是洪水猛兽吗?

1 天前
 liuidetmks

很多开发者一提到 SQL 就“谈此色变”,觉得难以调试、难以定位 bug
最后就是一句话,就是这个东西碰不得,是邪教


存储过程这个东西存在这么久,不可能一无是处吧

有没有可能,像 TypeScript 转译为 JavaScript 一样,有一种高级语言可以:

10910 次点击
所在节点    数据库
114 条回复
cxe2v
1 天前
出来多少年的 ORM 框架不就是你要的东西
lpxxn
1 天前
100%洪水猛兽
zhanlanhuizhang
1 天前
没有吧,公司里面所有的系统都用了。
Debug1998
1 天前
我维护过离职人员写的存储过程,这个东西的使用,我有两个问题:1. 执行出了问题,只能写表记录异常、错误信息? 2. 存储过程和 Java 等语言实现相同的功能,在代码上存储过程是否更不易理解。
zjsxwc
1 天前

就是全球最大的 ERP 软件,德国思爱普 SAP 的 abap 语言。

abap 就是进阶版本的 SQL 语言,这个 sql 语言不但能操作数据库,还能用来描述用户交互界面。
MuSeCanYang
1 天前
存储过程的逻辑,在我们这占了最起码 30%
稍微复杂一点的数据交互,不用存储过程,慢的要死。
spritecn
1 天前
甚至 xml 都是洪水猛兽,超过 5 行根本看不懂,存储的语法和 bat,shell 有得一比,一般人看不懂,不像 java,python 那么直接
felixcode
1 天前
有学习门槛的东西,都有可能被找借口躲避
xiangbohua
1 天前
不会用不好管理而已,实际上用的好的话,性能很不错
cheng6563
1 天前
当项目管理起来还行,不管理直接上数据库随便改那就是洪水猛兽。
sanmaozhao
1 天前
存储过程还有一个问题:可移植性差
如果需要支持不同的数据库,一般就没法用存储过程了
msg7086
1 天前
不同的东西有不同的使用场景啊。
说是邪教的,无非是因为他们的使用场景不适合用存储过程罢了。
给你一台 1TB 内存 128 核心的服务器跑 Oracle 数据库,用户数量就 1 万人,业务逻辑常年不多变,你告诉我为啥不用存储过程。
iugo
1 天前
如果存储过程和后端的业务逻辑是两班人马写, 并且 存储过程 可以静态分析, 那么 存储过程 才可以接受.

性能问题, 更应该用别的方式优化, 比如调整结构, 异步, 分布式, 缓存等.
SupperHobby
1 天前
银行都是存储过程
forbreak
1 天前
个人觉得存储过程的问题,主要还是团队人数太多的时候,管理不善带来的。 新旧人员交接,互相关联的业务多个存储过程和代码里面的业务交叉影响等。 存储过程本身倒是没什么大问题。
sagaxu
1 天前
哪个高级语言没有操作 DB 的 DSL ?完全满足你这几个要求。

谈 SQL 色变,那是因为不熟悉,系统性学过 SQL 的开发者很少,给存储过程加过断点的更少。
eraserrain
1 天前
你好是的,debug 和版本管理简直灾难,虽然有时候设一些 sp 和 trigger 还蛮好用的
lujiaxing
1 天前
看情况. 对于互联网企业来说, 存储过程本身就是没必要的. 互联网企业本身业务非常简单, 几乎无外乎 CURD.
但是对于 SAP, 用友, 久其, 任我行那些 ERP 系统, 以及四通一达的那些 WMS 系统来说, 存储过程就是解决复杂需求的利器. 哦对, 也包括电信运营商与银行. 它们的存储过程更加复杂, 但存储过程对他们来说也往往是必然的选择.


业务逻辑越是复杂, 存储过程的就越是有存在的必要.

哦对, 铁路的 TRS 后面的业务逻辑全都是存储过程.
totoro52
1 天前
等你维护到几百个储存过程的古老项目就知道了,每天写代码都感觉自己在学习黑魔法
xdzhang
1 天前
我这里还有一套系统全是视图存储过程触发器,其中有些看都不想看。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://yangjunhui.monster/t/1130319

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX