0

在我的 asp.net 项目中,C# 中的服务器端过滤器函数正在构建 SQLWHERE子句,然后将其传递到 SQL 存储过程中,例如,

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

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

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

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

4

2 回答 2

1

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

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

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

于 2012-05-01T22:00:24.957 回答
0

,没有更好的方法来执行此操作,因为您正在构建要执行的动态 SQL。

如果您想做得更好,请不要运行动态 SQL。

动态 SQL 的祸与福

于 2012-05-01T22:02:01.217 回答