如何以编程方式将搜索条件添加到 SQL 存储过程? 在我的应用程序 (C#) 中,我使用存储过程 (SQL Server 2008R2)
ALTER PROCEDURE [dbo].[PROC001]
@userID varchar(20),
@password varchar(20)
AS
SELECT * FROM tUsers WHERE RTRIM(Name) = @userID AND RTRIM(Password) = @password
我想通过更多条件扩展此查询,现在我不知道有多少条件会因程序执行而使用此查询。2、3、6 或 20。我想以编程方式添加这些条件,例如:
SELECT * FROM tUsers WHERE RTRIM(Name) = @userID AND RTRIM(Password) = @password
AND Field2 = '1' AND Field3 = '0' OR Field4 <> '8' AND Field5 < '100' ....
是否可以动态地向存储过程发送条件?
最佳答案
您只能在 sql 中执行此操作,如下所示:
SELECT *
FROM tUsers
WHERE 1 = 1
AND (@userID IS NULL OR RTRIM(Name) = @userID )
AND (@password IS NULL OR RTRIM(Password) = @password)
AND (@field2 IS NULL OR Field2 = @field2)
....
如果传递给存储过程的任何参数具有 NULL
值,则整个条件将被忽略。
请注意:我添加了 WHERE 1 = 1
以使查询在没有参数传递给查询的情况下工作,在这种情况下所有结果集都将被返回,因为 1 = 1
始终为真。
关于c# - 以动态/编程方式将 WHERE 子句添加到 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11329823/