exec时存储过程中非布尔值的错误表达式

时间:2016-11-04 04:07:58

标签: sql-server

我有一个存储过程示例,当我运行此存储过程时,出现以下错误:

  

在预期条件的上下文中指定的非布尔类型的表达式,在'aa'附近。

这是我的查询,请帮我解决这个错误。

感谢。

int gradecount = 1;
for (int i = 0; i < numOfGrades; i++){
    double belowzero = gradeinput.nextDouble();

    System.out.println("enter grade number " + gradecount + ":" );
    gradecount++;

    while (belowzero < 0){
        belowzero = gradeinput.nextDouble();
    }
    grades[i] = belowzero;
}
}

2 个答案:

答案 0 :(得分:2)

@SQLString的长度应该增加,500个字符的结尾如下

SET @SQLString += ' inner join TCashVoucherDetail as bb (NOLOCK) on aa

这就是原因:

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

解决方案:

DECLARE @SQLString nvarchar(4000); -- instead of 500

答案 1 :(得分:0)

只需将PRINT @SQLString替换为EXECUTE sp_executesql @SQLString;即可查看正在执行的查询(不会执行您的查询)。

似乎@SQLString的长度不足以存储查询,因此您的字符串被截断。要解决这个问题,只需将@SQLString定义为NVARCHAR(MAX)

即可