ALTER PROCEDURE [dbo].[sp_Products_SelectAllWhereDynamic]
(
   @productID int = NULL,
   @productName nvarchar(40) = NULL,
   @supplierID int = NULL,
   @categoryID int = NULL,
   @quantityPerUnit nvarchar(20) = NULL,
   @unitPrice money = NULL,
   @unitsInStock smallint = NULL,
   @unitsOnOrder smallint = NULL,
   @reorderLevel smallint = NULL,
   @discontinued bit = NULL
)
AS
BEGIN
  SET NOCOUNT ON;
 
  SELECT
  [ProductID],
  [ProductName],
  [SupplierID],
  [CategoryID],
  [QuantityPerUnit],
  [UnitPrice],
  [UnitsInStock],
  [UnitsOnOrder],
  [ReorderLevel],
  [Discontinued]
  FROM [dbo].[Products]
 
  WHERE
  ([ProductID] = @productID OR @productID IS NULL) AND
  ([ProductName] LIKE '%' + @productName + '%' OR @productName IS NULL) AND
  ([SupplierID] = @supplierID OR @supplierID IS NULL) AND
  ([CategoryID] = @categoryID OR @categoryID IS NULL) AND
  ([QuantityPerUnit] LIKE '%' + @quantityPerUnit + '%' OR @quantityPerUnit IS NULL) AND
  ([UnitPrice] = @unitPrice OR @unitPrice IS NULL) AND
  ([UnitsInStock] = @unitsInStock OR @unitsInStock IS NULL) AND
  ([UnitsOnOrder] = @unitsOnOrder OR @unitsOnOrder IS NULL) AND
  ([ReorderLevel] = @reorderLevel OR @reorderLevel IS NULL) AND
  ([Discontinued] = @discontinued OR @discontinued IS NULL)
 
END