一个存储过程用于来自前端的不同调用
本文关键字:前端 调用 用于 一个 存储过程 | 更新日期: 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来确定表单是否已填写,并相应地设置变量。存储过程将完成其余的工作。