我试图将整个存储过程作为字符串执行,因为我必须使条件动态化。这是我的代码:
CREATE PROCEDURE SP1
(@VoucherType varchar(10),
@ProductID bigint,
@BrandID bigint)
AS
BEGIN
DECLARE @Condition as varchar(300)
SET @Condition=' WHERE VoucherType=@VoucherType '
IF (@ProductID<>-1)
BEGIN
SET @Condition=@Condition+' AND ProductID='+cast(@ProductID as varchar)
END
IF (BrandID<>-1)
BEGIN
SET @Condition=@Condition+' AND BrandID='+cast(@BrandID as varchar)
END
EXEC('SELECT * FROM Products '+@Condition)
END
过滤ProductID
和BrandID
是可选的(如果它们的值不是 -1,那么这些条件将添加到 where 子句)。并且按 VoucherType 过滤是强制性的。问题是我无法@VoucherType
在线获取参数的值:
SET @Condition=' WHERE VoucherType=@VoucherType '
错误说没有名为 SI 的列(这是我的输入@VoucherType
)。如何获取该参数的值。