一个存储过程用于来自前端的不同调用

本文关键字:前端 调用 用于 一个 存储过程 | 更新日期: 2023-09-27 18:14:03

是否可以创建一个可以执行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个唯一的存储过程来做到这一点,但是它可以只用一个来完成吗?

一个存储过程用于来自前端的不同调用

您可以使用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/else来确定表单是否已填写,并相应地设置变量。存储过程将完成其余的工作。