gpt4 book ai didi

asp.net - 将内联 SQL 转换为存储过程

转载 作者:行者123 更新时间:2023-12-02 12:04:37 25 4
gpt4 key购买 nike

我正在开发现有的 ASP.NET 应用程序。当前的应用程序使用了大量的内联查询。现在他们只想将所有查询重写为存储过程。

我的问题是,这些查询非常“动态”,并且查询是根据不同的 if...else 条件连接起来的,例如:

string query = "Select * from EmpTable WHERE EmpType ='ACTIVE'";

if (conditionA == true)
query += "AND ID = 12345 ";

if (conditionB == true)
query += "AND Dept = 'Finance' ";

else
query += "AND Dept <> 'Finance' ";

if (conditionC == true)
query += "Order by EmpID";

else if (ConditionD == true)
query += "Order by Dept";

他们还希望避免使用动态查询。我有什么选择?

编辑:我知道我还可以使用存储过程构建动态查询,我只是想知道还有哪些其他“更少痛苦”的选项。

最佳答案

传入您可能需要的所有参数,并使用IsNull和/或 When子句来创建与原始程序中相同的查询。

或者,您可以简单地在存储过程本身中动态构建查询,或者简单地为每个排列创建一个查询。不一定有趣或聪明,但有效并且使事情在未来更容易维护 - 特别是当您可以将它用作 future 重构存储过程的垫脚石时。

编辑:还有一个理由将它们全部转换为存储过程 - 当 future 的开发人员出现并想要添加一些 SQL 时,他们将遵循约定并自己创建一个新的存储过程。我想您的代码中充斥着动态 SQL 的原因之一是因为它已经充斥着动态 SQL。也许随着时间的推移,你可以改进它们(抛弃传统,必须在每个转换的顶部修复),并且你也会让他们自己修复设计。

关于asp.net - 将内联 SQL 转换为存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24641321/

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