在sql存储过程中根据条件追加查询

时间:2011-01-27 13:47:57

标签: .net sql sql-server-2005

在我的.net 2.0应用程序中,我想将所有内联查询转换为sql存储过程。

我有像

这样的查询
StringBuilder query = new StringBuilder();    
**query.AppendLine("Select * from xxx Where 1 =1");**

if(Id != 0)    
query.AppendLine("And Id = @Id");

if(Nemae != null)    
query.AppendLine("And Name = @Name");

我怎么能在sql存储过程中写这个?

我需要重复吗?

2 个答案:

答案 0 :(得分:1)

您可以将参数传递给存储过程并使用它们:

CREATE PROC spTest
(
    @name varchar(30)=NULL
    , @id int=NULL
)
AS
BEGIN
    SELECT * FROM TABLE_NAME
    WHERE (@name IS NULL OR name = @name)
    AND    (@id IS NULL OR id = @id)
END

答案 1 :(得分:0)

可能是这样的:

SELECT * FROM TABLEA
WHERE (@PARAM1 = 0 OR ID=@PARAM1) AND (@Name = NULL OR COLUMN2=Name)