在期望有条件的上下文中指定的非布尔类型的表达式


SET @SQLScript = 'SELECT b.name
FROM tblBrand b 
JOIN tblStore s ON b.PK_BrandID = s.FK_BrandID
JOIN tblCustomReportTemp  CT on b.PK_BrandID = CT.BrandID
WHERE b.Active =1 '
if(@reportname is not null)
        set @SQLScript = @SQLScript + ' AND CT.ReportName = @reportname'
    if(@username is not null)
        set @SQLScript = @SQLScript + ' AND CT.UserName = @username' 

上面的行抛出:

在需要条件的上下文中指定的非布尔类型表达式,在'Repo'附近。

首先,请确保您将@SQLScript变量声明为varchar(max)。

我也不知道你是否使用sp_executesql来运行该查询,但如果你不这样做,你必须使用concat函数或concat操作符来创建你的查询,并为varchar格式的每个参数添加简单的引号。

SET @SQLScript = 'SELECT b.name
FROM tblBrand b 
JOIN tblStore s ON b.PK_BrandID = s.FK_BrandID
JOIN tblCustomReportTemp  CT on b.PK_BrandID = CT.BrandID
WHERE b.Active =1 '
if(@reportname is not null)
        set @SQLScript = @SQLScript + ' AND CT.ReportName = ''' + @reportname + ''''
    if(@username is not null)
        set @SQLScript = @SQLScript + ' AND CT.UserName = ''' + @username + '''' 

应该工作。

最新更新