如何在标量函数中使用SELECT CASE?及标量函数RETURN语法错误排查
解决标量函数中SELECT CASE的语法错误问题
你遇到的问题根源在于标量函数的RETURN语句不能直接包裹SELECT查询——标量函数要求返回单个值,而SELECT会生成一个结果集,这就导致了语法报错。
我们可以直接把CASE表达式作为RETURN的参数,不需要外层的SELECT,修改后的代码如下:
CREATE FUNCTION IsSumEqualToTen ( @number1 INT, @number2 INT ) RETURNS BIT AS RETURN CASE WHEN (@number1 + @number2) = 10 THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT) END
如果后续你的函数逻辑更复杂,需要多行代码处理,也可以用BEGIN...END块来包裹逻辑:
CREATE FUNCTION IsSumEqualToTen ( @number1 INT, @number2 INT ) RETURNS BIT AS BEGIN DECLARE @result BIT SET @result = CASE WHEN (@number1 + @number2) = 10 THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT) END RETURN @result END
这样修改后,函数就能正常运行:当两个输入整数之和等于10时返回1(BIT类型),否则返回0。
内容的提问来源于stack exchange,提问作者Matt Arnold
相关产品推荐
相关产品推荐

