SELECT @sql = @sql + ' AND ReorderPoint = @ReOrderPoint '
-- 执行查询
EXEC sp_executesql @sql, @params, @ProductNumber, @Color, @ReorderPoint
不用动态查询来构造WHERE子句
基于需要的运算符的比较,也有其他方法可用,下面的示例将介绍如何使用LIKE运算符来构建WHERE子句.
脚本五(2):
/*
EXECUTE ProductSearch5 NULL, NULL
EXECUTE ProductSearch5 'CA%', NULL
EXECUTE ProductSearch5 NULL, 'Black%'
EXECUTE ProductSearch5 'CA%', 'Black%'
*/
CREATE PROCEDURE ProductSearch5
(
@ProductNumber VARCHAR(20),
@Color VARCHAR(10)
)
AS
SET NOCOUNT ON
SELECT *
FROM Production.Product
WHERE ProductNumber LIKE ISNULL(@ProductNumber, '%')
AND Color LIKE ISNULL(@Color, '%')
上述代码与脚本五比较,是最简单的,这里使用了ISNULL函数.如果参数为空,则使用通配符%来进行匹配,不为空则使用实际的参数进行匹配.当然也有其他的一些方法,使用CASE语句来完成.
脚本六:
/*
EXECUTE ProductSearch6 NULL, NULL
EXECUTE ProductSearch6 'CA%', NULL
EXECUTE ProductSearch6 NULL, 'Black%'
EXECUTE ProductSearch6 'CA%', 'Black%'
*/
CREATE PROCEDURE ProductSearch6
(
@ProductNumber VARCHAR(20),
@Color VARCHAR(10)
)
AS
SET NOCOUNT ON
SELECT *
FROM Production.Product
WHERE