SQL Server: 解决链接服务器中 CASE WHEN 不能超过10级

来源:互联网 发布:unity3d angrybots 编辑:程序博客网 时间:2024/05/20 15:41
--1. 不用链接服务器,无问题DECLARE @i INTSET @i=100SELECT TOP 1CASE WHEN @i=100 THEN 1WHEN @i=200 THEN 2WHEN @i=300 THEN 3WHEN @i=400 THEN 4WHEN @i=500 THEN 5WHEN @i=600 THEN 6WHEN @i=700 THEN 7WHEN @i=800 THEN 8WHEN @i=900 THEN 9WHEN @i=1000 THEN 10WHEN @i=1100 THEN 11END FROM [master].sys.objects--2. 链接服务器,有问题/*DECLARE @i INTSET @i=100SELECT TOP 1CASE WHEN @i=100 THEN 1WHEN @i=200 THEN 2WHEN @i=300 THEN 3WHEN @i=400 THEN 4WHEN @i=500 THEN 5WHEN @i=600 THEN 6WHEN @i=700 THEN 7WHEN @i=800 THEN 8WHEN @i=900 THEN 9WHEN @i=1000 THEN 10WHEN @i=1100 THEN 11WHEN @i=1200 THEN 12END FROM [db2].[master].sys.objects*//*消息 8180,级别 16,状态 1,第 22 行无法预定义语句。消息 125,级别 15,状态 4,第 22 行Case 表达式只能嵌套到 10 层。*/--3. 解决DECLARE @i INTDECLARE @t TABLE ( [type] INT, result INT)INSERT INTO @t VALUES (100,1)INSERT INTO @t VALUES(200,2)INSERT INTO @t VALUES(300,3)INSERT INTO @t VALUES(400,4)INSERT INTO @t values(500,5)INSERT INTO @t values(600,6)INSERT INTO @t values(700,7)INSERT INTO @t values(800,8)INSERT INTO @t values(900,9)INSERT INTO @t values(1000,10)INSERT INTO @t values(1100,11)SET @i=100SELECT TOP 1 (SELECT result FROM @t A WHERE a.type=@i) AS rFROM [db2].[master].sys.objects

0 0