以编程方式构建 WHERE 子句,然后将其作为参数传递到 SQL 中

本文关键字:参数传递 SQL 然后 方式 编程 构建 WHERE 子句 | 更新日期: 2023-09-27 18:32:47

在我的 asp.net 项目中,在某些情况下,C# 中的服务器端筛选器函数正在构建 SQL WHERE 子句,然后将其传递到 SQL 存储过程中,例如,

过滤器生成一个字符串变量,其值类似于" WHERE Qty < 5 AND Price > 10 "。

存储过程的相关部分如下所示:

Exec (‘
    Select Name, Location
    From Users
    + ‘@passedInWhereClause’
‘)

如您所见,我们必须对使用传递的变量构建的字符串执行EXEC命令,该变量包含由服务器端的 C# 代码生成的 where 子句。我真的很想要一种方法来消除EXEC并使SQL代码看起来更专业,而不是用EXEC包裹的巨大字符串。有没有更好的方法可以做到这一点?

以编程方式构建 WHERE 子句,然后将其作为参数传递到 SQL 中

您应该考虑可选参数,示例

WHERE (@Type = NULL OR @Type = '' OR @Type = Type)

这允许您将 NULL 或空白传递给 SP 以忽略 where 子句,或者传递值以应用 where 子句。

,没有更好的方法可以做到这一点,因为您正在构建要执行的动态 SQL。

如果你想做得更好,那就不要运行动态SQL。

动态SQL的诅咒与祝福