尝试执行以下存储的proc时返回错误:
EXECUTE p_someProc
--list of vars
CASE WHEN @var1=1 AND @var2=1 THEN 3
WHEN @var2=1 THEN 2
WHEN @var1=1 THEN 1 END,
--more vars
还包括其他CASE功能,尽管只会出现一个错误,它指向第一个CASE。
当在PRINT函数中运行相同的表达式时,将返回预期的结果。
declare @var1 bit set @var1 = 1
declare @var2 bit set @var2 = 1
print(CASE WHEN @var1=1 AND @var2=1 THEN 3
WHEN @var1=1 THEN 2
WHEN @var2=1 THEN 1 END)
输出为“3”
我假设我以某种方式滥用了CASE函数。有人能想到解决方法或解决方法吗?
提前致谢。
-斯坦
最佳答案
正如JeremyMcGee所提到的,您需要执行任务而不是试图将案件传递给执行人员,请尝试以下类似的操作
Declare @varx int
select @varx = CASE WHEN @var1=1 AND @var2=1 THEN 3
WHEN @var2=1 THEN 2
WHEN @var1=1 THEN 1 END
EXECUTE p_someProc @varx
关于tsql - SQL Server 2000 “Incorrect syntax near the keyword ' CASE'”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1845256/