如何解决必须声明标量变量“ @Brand”
该查询在SQL Server中工作正常,但是当转移到Visual Studio查询生成器时,出现错误
必须声明标量变量
查询的目的是显示最初过滤到类别的产品表中的结果,然后在选择大小,颜色和品牌时将结果过滤掉。
该功能显示了4个参数,类别,品牌,尺寸和颜色
SELECT
ProdName,SellingPrice,BrandID,Size,Colour
FROM
ProductTbl
WHERE
(Category LIKE @category)
AND (BrandID = CASE WHEN @Brand IS NULL THEN BrandID ELSE @Brand END)
AND (Size = CASE WHEN @Size IS NULL THEN Size ELSE @Size END)
AND (Colour = CASE WHEN @Colour IS NULL THEN Colour ELSE @Colour END)
为什么会出现此错误,我该如何解决?
解决方法
通过查询创建存储过程,然后调用该存储过程,因此您无需声明这些变量。示例通话sproc_get_products 'SomeBrand','SomeColour','SomeCategory','SomeSize'
创建存储过程的代码
create proc sproc_get_prodcuts (
@Brand nvarchar(max),@Colour nvarchar(max),@Category nvarchar(max),@Size nvarchar(max)
)
as
begin
SELECT
ProdName,SellingPrice,BrandID,Size,Colour
FROM
ProductTbl
WHERE
(Category LIKE @category)
AND (BrandID = CASE WHEN @Brand IS NULL THEN BrandID ELSE @Brand END)
AND (Size = CASE WHEN @Size IS NULL THEN Size ELSE @Size END)
AND (Colour = CASE WHEN @Colour IS NULL THEN Colour ELSE @Colour END)
end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。