gpt4 book ai didi

sql - 在 SQL Server 2005 中寻求模块化——将多个记录集返回到存储过程

转载 作者:行者123 更新时间:2023-12-04 20:17:18 27 4
gpt4 key购买 nike

这个问题我遇到过几次,都是用同样的方法解决的。但这并不漂亮,我想知道是否有人知道更优雅的东西......

基本目标:
- 我有一段代码在许多存储过程中都很常见。
- 出于维护目的,我喜欢模块化。
- 所以我想把通用代码放在它自己的存储过程中。
- 所有其他存储过程都调用那个。
- 嘿 presto,模块化、可重用、可维护的代码。

复杂的问题:
- 通用代码生成两个记录集/表
- 存储过程或函数不能将两个表返回到存储过程
- 在单独的函数中生成两个表会显着降低性能
(这会导致大量的冗余重新计算)


历史上使用的解决方案:

1> 在外部 SP 中创建#Temp 表
- 中央代码插入#temp 表
- 允许返回任意数量的数据集
- 如果新列被添加到数据中,每个外部 SP 也将被修改。

2>创建真正的表来插入数据。
- 如果向数据中添加新列,则只需更改一组表定义。
- 需要“ session ID”来区分“我的数据”和另一个进程数据。
- 错误等可能会在表中留下旧数据,需要每晚进行清理。
- 使数据库困惑。

第一个选项更接近模块化目标。逻辑更改只需要在一个地方进行。但是额外的列等需要识别使用 SP 的每一位代码并更新#temp 表定义。

第二个选项使它更加优雅,但引入了一大堆新的考虑因素,再次扼杀了优雅。


只使用SQL Server 2005,有没有更好的选择? (在 SQL Server 2000 中工作也是一种奖励。)


干杯,垫子。

最佳答案

看来以下链接可能对您有用:

http://www.sommarskog.se/share_data.html

关于sql - 在 SQL Server 2005 中寻求模块化——将多个记录集返回到存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1238359/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com