一个存储过程用于前端

时间:2016-10-19 16:53:04

标签: c# sql stored-procedures

是否可以创建一个可以执行3个或更多不同搜索的存储过程?例如:

    WHERE 
    (AccountNumber= @AccountNumber)                                  and
    (@RoutingNumber = null)  or  ( RoutingNumber = @RoutingNumber)   and
    (@PolicyNumber = null)   or  (PolicyNumber = @PolicyNumber)      and
    (@PaymentAmount = null)  or  ( PaymentAmount = @PaymentAmount)   and
    (@StartDate = null) or (PostingDate >= @StartDate)  and
    (@EndDate = null)  or (PostingDate <= @EndDate) 

所以在这个例子中,每个参数都是可选的,除了AccountNumber。

我希望能够根据来自UI的输入执行以下可能的搜索。 1)AccountNumber本身。 2)AccountNumber和StartDate和EndDate。 3)AccountNumber和PaymentAmount。

现在我知道我可以使用3个独特的存储过程执行此操作,但只能使用一个吗?

1 个答案:

答案 0 :(得分:0)

您可以使用Transact-SQL(T-SQL)在存储过程中创建if语句。见https://msdn.microsoft.com/en-us/library/ms182717.aspx

示例查询:

IF(@RoutingNumber IS NOT NULL)
   BEGIN
        //Put your query in here with the Routing number.
   END
ELSE IF (@StartDate IS NOT NULL AND @EndDate IS NOT NULL)
   BEGIN
        //put query in here with Start/End Date
   END

等.... 然后在C#代码中,您可以简单地使用if / elses来确定表单是否已填写,并相应地设置变量。 Stored Proc将完成剩下的工作。