在预期条件的上下文中指定的非布尔类型的表达式,near

An expression of non-boolean type specified in a context where a condition is expected, near

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 + '''' 

应该有效。