存储过程中的SQL Case语句是否有长度限制?

时间:2015-10-16 15:34:21

标签: sql-server stored-procedures case

我在一个包含1,700行变量的存储过程中编写了一个非常基本的SQL CASE语句:即

CASE Color  
    WHEN '1' THEN 'Blue'
    WHEN '2' THEN 'Red'
    .....
    WHEN '1700' THEN 'Violet'
    ELSE Color
END as 'color'

我超过了最大长度吗?存储过程构建,但是当我从网站调用它时,我得到一个运行时错误(当我只有1300它工作正常)。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我所知道的CASE表达式的唯一限制是你不能将它们嵌套超过10深,这与你正在做的事情无关。存储过程的长度限制为250MB或批量大小,以较小者为准,但非常肯定会阻止您首先构建过程,并且不太可能达到该限制。

也许其他人可以找出导致此失败的技术原因,但有一点很清楚,您应该使用包含所有数字和颜色对的查找表,因此您可以JOIN,例如:

SELECT COALESCE(b.Color_Name,a.Color)
FROM YourTable a
LEFT JOIN lkp_Colors b
  ON a.Color = b.Color_ID