Нужна помощь, ребята.
У меня есть хранимая процедура, которая отображает все записи.
SELECT
Entity.Name as [ENTITY],
Product.Name AS [Product Name],
convert(date, whseintg.TrnDate) as TrnDate,
DOGR.AppNo,
DOGR.TrnNo,
DOGR.TrnType,
DOGR.StkId,
DOGR_D.ProdId,
DOGR_D.Qty,
DOGR_D.QtyIn,
DOGR_D.UPrice,
Ratio.Ratio
FROM Entity WITH ( NOLOCK ),
Product WITH ( NOLOCK ),
DOGR WITH ( NOLOCK ),
DOGR_D WITH ( NOLOCK ),
Ratio WITH ( NOLOCK ),
whseintg WITH (Nolock)
WHERE ( DOGR_D.ProdId = Product.ProdId ) and
( DOGR.TrnType = DOGR_D.TrnType ) and
( DOGR.AppNo = DOGR_D.AppNo ) and
( DOGR_D.RatioId = Ratio.Ratioid ) and
( DOGR.TrnType = whseintg.TrnType ) and
( DOGR.Appno = whseintg.TrnNo ) and
( DOGR.TrnNo is not null ) and
( ( dbo.DOGR.TrnType = 'SCR' ) ) and
( dbo.DOGR.LocID = dbo.Entity.LocID)
Теперь у меня есть определенные параметры, такие как @FromProductName
и @ToProductName
вдизайн-представление отчета.
Я не хочу использовать динамические запросы, потому что это повлияет на производительность приложения.Что я хочу, так это то, что если в обе переменные передается значение, запрос будет выглядеть примерно так:
SELECT
Entity.Name as [ENTITY],
Product.Name AS [Product Name],
convert(date, whseintg.TrnDate) as TrnDate,
DOGR.AppNo,
DOGR.TrnNo,
DOGR.TrnType,
DOGR.StkId,
DOGR_D.ProdId,
DOGR_D.Qty,
DOGR_D.QtyIn,
DOGR_D.UPrice,
Ratio.Ratio
FROM Entity WITH ( NOLOCK ),
Product WITH ( NOLOCK ),
DOGR WITH ( NOLOCK ),
DOGR_D WITH ( NOLOCK ),
Ratio WITH ( NOLOCK ),
whseintg WITH (Nolock)
WHERE ( DOGR_D.ProdId = Product.ProdId ) and
( DOGR.TrnType = DOGR_D.TrnType ) and
( DOGR.AppNo = DOGR_D.AppNo ) and
( DOGR_D.RatioId = Ratio.Ratioid ) and
( DOGR.TrnType = whseintg.TrnType ) and
( DOGR.Appno = whseintg.TrnNo ) and
( DOGR.TrnNo is not null ) and
( ( dbo.DOGR.TrnType = 'SCR' ) ) and
( dbo.DOGR.LocID = dbo.Entity.LocID)
and (DOGR_D.ProdId between @FromProdID and @ToProdID)
В противном случае он будет вести себя как исходный запрос.Это возможно?