CREATE PROCEDURE search_orders_11a @orderid int = NULL, @fromdate datetime = NULL, @todate datetime = NULL, @minprice money = NULL, @maxprice money = NULL, @custid nchar(5) = NULL, @custname nvarchar(40) = NULL, @city nvarchar(15) = NULL, @region nvarchar(15) = NULL, @country nvarchar(15) = NULL, @prodid int = NULL, @prodname nvarchar(40) = NULL, @debug bit = 0 AS DECLARE @sql nvarchar(4000), @fromdatestr char(23), @todatestr char(23), @minpricestr varchar(25), @maxpricestr varchar(25) SELECT @fromdatestr = convert(char(23), @fromdate, 126), @todatestr = convert(char(23), @todate, 126), @minpricestr = convert(varchar(25), @minprice), @maxpricestr = convert(varchar(25), @maxprice) SELECT @sql = 'SELECT OrderID, OrderDate, UnitPrice, Quantity, CustomerID, CompanyName, Address, City, Region, PostalCode, Country, Phone, ProductID, ProductName, UnitsInStock, UnitsOnOrder FROM dbo.search_orders_11fun (' + CASE WHEN @orderid IS NOT NULL THEN str(@orderid) ELSE 'DEFAULT' END + ', ' + CASE WHEN @fromdate IS NOT NULL THEN quotename(@fromdatestr, '''') ELSE 'DEFAULT' END + ', ' + CASE WHEN @todate IS NOT NULL THEN quotename(@todatestr, '''') ELSE 'DEFAULT' END + ', ' + CASE WHEN @minprice IS NOT NULL THEN quotename(@minpricestr, '''') ELSE 'DEFAULT' END + ', ' + CASE WHEN @maxprice IS NOT NULL THEN quotename(@maxpricestr, '''') ELSE 'DEFAULT' END + ', ' + CASE WHEN @custid IS NOT NULL THEN quotename(@custid, '''') ELSE 'DEFAULT' END + ', ' + CASE WHEN @custname IS NOT NULL THEN quotename(@custname, '''') ELSE 'DEFAULT' END + ', ' + CASE WHEN @city IS NOT NULL THEN quotename(@city, '''') ELSE 'DEFAULT' END + ', ' + CASE WHEN @region IS NOT NULL THEN quotename(@region, '''') ELSE 'DEFAULT' END + ', ' + CASE WHEN @country IS NOT NULL THEN quotename(@country, '''') ELSE 'DEFAULT' END + ', ' + CASE WHEN @prodid IS NOT NULL THEN str(@prodid) ELSE 'DEFAULT' END + ', ' + CASE WHEN @prodname IS NOT NULL THEN quotename(@prodname, '''') ELSE 'DEFAULT' END + ')' + 'ORDER BY OrderID' IF @debug = 1 PRINT @sql EXEC(@sql)