是否可以创建一个可以执行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个独特的存储过程执行此操作,但只能使用一个吗?
答案 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将完成剩下的工作。