Jef*_*ark 8 sql-server stored-procedures t-sql
我最近加入了一家公司,我刚刚注意到许多存储过程都有相同的代码段重复。我注意到是因为我的任务是在它发生的每个 SP 中更改该代码的一小部分:)
这是一段相当大的代码,大约 30 行。该代码是插入语句的一部分,它基本上将 4 个表与WHERE/AND
从 SP 到 SP 并没有真正改变的条件连接在一起。它看起来类似于下图:
...
...
FROM <TableOne>
INNER JOIN <TableTwo> ON ...
AND .....
AND .....
LEFT JOIN <TableThree> ON ...
AND .....
AND .....
WHERE .....
AND .....
AND .....
AND MedicalPlanCode IN ('abc', 'def', 'ghi')
Run Code Online (Sandbox Code Playgroud)
唯一从 SP 更改为 SP 的部分是值('abc', 'def', 'ghi')
这些值的数量也可能不同,因此某些 SP 将具有 2 个值,其他 SP 将具有 5 个,等等......
我想到的一切都将那部分代码更改为动态 SQL,我不确定这是否值得。然而,我的程序员讨厌这种情况。
我应该尝试实现某种形式的代码重用吗?它会有投资回报率吗?我有哪些选择?我不得不经历大约 100 个存储过程,大约需要一个小时。
这 100 个 SP 分布在 20 个左右不同的数据库中。我确实有权创建视图。
Cha*_*tox 11
这应该适合你:
CREATE VIEW MyView AS
SELECT <colList>
FROM <TableOne>
INNER JOIN <TableTwo> ON ...
AND .....
AND .....
LEFT JOIN <TableThree> ON ...
AND .....
AND .....
WHERE .....
AND .....
AND .....
Run Code Online (Sandbox Code Playgroud)
然后在 Procs 中替换为:
...
FROM MyView
WHERE
MedicalPlanCode IN ('abc', 'def', 'ghi')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1438 次 |
最近记录: |