gpt4 book ai didi

sql - 在 exec() 中使用 varchar 参数

转载 作者:行者123 更新时间:2023-12-04 23:46:47 24 4
gpt4 key购买 nike

我试图将我的整个存储过程作为一个字符串来执行,因为我必须使条件动态化。这是我的代码:

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

ProductIDBrandID 过滤是可选的(如果它们的值不是 -1,则将这些条件添加到 where 子句中)。按 VoucherType 过滤是强制性的。问题是我无法在行中获取参数 @VoucherType 的值:

SET @Condition=' WHERE VoucherType=@VoucherType '

错误表明没有名为 SI 的列(这是我为 @VoucherType 输入的)。如何获取该参数的值。

最佳答案

无需动态 SQL 即可:

SELECT * FROM Products WHERE VoucherType=@VoucherType AND 
(@ProductID=-1 OR ProductID=@ProductID)
AND
(@BrandID=-1 OR BrandID=@BrandID)

关于sql - 在 exec() 中使用 varchar 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19929763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com