小编And*_*rey的帖子

为什么链接服务器在 CASE 表达式中限制为 10 个分支?

为什么这个CASE表达式:

SELECT CASE column 
        WHEN 'a' THEN '1' 
        WHEN 'b' THEN '2' 
        ... c -> i
        WHEN 'j' THEN '10' 
        WHEN 'k' THEN '11'  
    END [col] 
FROM LinkedServer.database.dbo.table
Run Code Online (Sandbox Code Playgroud)

产生这个结果?

错误消息:
无法准备消息 8180,级别 16,状态 1,第 1 行语句。
消息 125,级别 15,状态 4,第 1 行
Case 表达式只能嵌套到级别 10。

显然这里没有嵌套CASE表达式,尽管有 10 多个“分支”。

另一个怪事。这个内联表值函数产生相同的错误:

ALTER FUNCTION [dbo].[fn_MyFunction]
(   
     @var varchar(20)
)
RETURNS TABLE 
AS
RETURN 
(
    SELECT CASE column 
            WHEN 'a' THEN '1' 
            WHEN 'b' THEN '2' 
            ... c -> i …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server-2008 sql-server sql-server-2000 linked-server

19
推荐指数
3
解决办法
2万
查看次数