Как преобразовать условие сложного блока в процедуру MSSQL

0
задан Bui Quy 27 February 2019 в 04:25
поделиться

1 ответ

Вы можете использовать его следующим образом

ALTER PROCEDURE [dbo].[DailyBatchSummaryReport_NoGroup]
@FromDatePara Datetime,
@ToDatePara Datetime,
@SeleRecipe nvarchar(max),
@SeleOrder nvarchar(max),
@SeleCustomer nvarchar(max),
@SeleSite nvarchar(max),
@SeleTruck nvarchar(max),
@SeleDriver nvarchar(max),
AS
BEGIN

Передать значения @SeleOrder, @SeleCustomer как 0 для непроверенного и 1 для флажка

select * from
yourtable
where 
OrderNumber= CASE WHEN @SeleOrder = '0' THEN OrderNumber ELSE @SeleOrder END
AND
CUSTOMER= CASE WHEN @SeleCustomer = '0' THEN CUSTOMER ELSE @SeleCustomer END
AND
Driver= CASE WHEN @SeleDriver = '0' THEN Driver ELSE @SeleDriver END

Убедитесь, что значение по умолчанию передано как 0. Здесь вы выбрали тип данных как nvarchar (max), поэтому я написал «0», иначе вы можете написать 0, если вы передадите просто значение типа int. или вы можете установить значение по умолчанию как 0

 ALTER PROCEDURE [dbo].[DailyBatchSummaryReport_NoGroup]
    @FromDatePara Datetime,
    @ToDatePara Datetime,
    @SeleRecipe int  = 0,
    @SeleOrder int  = 0,
    @SeleCustomer int  = 0,
    @SeleSite int  = 0,
    @SeleTruck int  = 0,
    @SeleDriver int  = 0,
    AS
    BEGIN

выбрать логику согласно вашему удобству кодирования. но вышеуказанный метод будет работать

0
ответ дан Ketan Kotak 27 February 2019 в 04:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: