因此,我希望能够在将零传递给存储过程时处理参数。因此,如果参数为零,我们将忽略AND语句。
这是我的程序:
USE [Test]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[OrderLoadAllPaged]
@WarehouseId int = 0,
@CreatedFromUtc datetime = null,
@CreatedToUtc datetime = null
AS
BEGIN
DECLARE
@sql nvarchar(max)
SET NOCOUNT ON;
SELECT TOP 100 *
FROM [Test].[dbo].[Order] with (NOLOCK)
WHERE
[Deleted] = 0
AND [WarehouseId] = @WarehouseId
AND [CreatedOnUtc] >= ISNULL(@CreatedFromUtc, '1/1/1900')
AND [CreatedOnUtc] < ISNULL(@CreatedToUtc, '1/1/2999')
END
我想要某种条件,仅当仓库编号大于0 AND [WarehouseId] = @WarehouseId
时才运行查询的这一部分>
类似:
IF (@WarehouseId > 0) AND [WarehouseId] = @WarehouseId
我真的很需要这个,因为在数据库中有3个仓库,分别是ID 1、2和3。如果我将其传递为零,则查询将失败,因为如果将零作为参数传递,则它将与我需要返回的所有3个仓库都不匹配。
因此,我希望能够在将零传递给存储过程时处理参数。因此,如果参数为零,我们将忽略AND语句。这是我的过程:USE [Test] GO SET ...
您可以添加案例说明
我认为您想要:
另一个选择是最大化使用sqlserver iif
函数