我正在维护各种 VB6 项目,其中一些查询被传递到具有“ELSE:”的服务器,并在 case 语句中使用冒号。
我想知道有人能告诉我 **ll 冒号是做什么用的吗?它会在 SQL2005 和更高版本中导致错误,但 SQL2000 可以正常工作。
我想将它从代码中删除并重新编译,但我担心它会破坏应用程序中的其他 10 件事..
提前致谢...
我正在维护各种 VB6 项目,其中一些查询被传递到具有“ELSE:”的服务器,并在 case 语句中使用冒号。
我想知道有人能告诉我 **ll 冒号是做什么用的吗?它会在 SQL2005 和更高版本中导致错误,但 SQL2000 可以正常工作。
我想将它从代码中删除并重新编译,但我担心它会破坏应用程序中的其他 10 件事..
提前致谢...
这是交易..有人在您的代码中使用 ELSE 关键字作为 LABEL。
TSQL 中的一个单词后跟一个冒号是一个标签。这是一个示例:
DECLARE @Count int
SET @Count = 0
ONE_MORE_TIME:
IF @Count <> 33
PRINT ‘Hello World’
SET @Count = @Count + 1
END
IF @Count <> GOTO ONE_MORE_TIME
在您的情况下,标签可能是“ELSE”
DECLARE @Count int
SET @Count = 0
ELSE:
IF @Count < 33
PRINT ‘Hello World’
SET @Count = @Count + 1
END
IF @Count < 33 GOTO ELSE
我有一种感觉,这段代码也会严重缩进。我几乎愿意为此投入一些钱。
为什么不删除它、重新编译并测试应用程序,看看它可能产生什么影响?
嗯,它会导致 SQL2005 中的错误?
在 SQL Server 中,在 case 语句中使用 ELSE 来捕获尚未捕获的任何内容(它与已“通过”所有其他案例的事物有关)。例如,假设我们想列出价格数据库中的一些商品,并使用自定义的“预算”文本列对它们进行分类,因此对于每个商品,我们将查看它的价格并设置它的“预算”值应该是:
SELECT title, price,
Budget = CASE price
WHEN price > 20.00 THEN 'Expensive'
WHEN price BETWEEN 10.00 AND 19.99 THEN 'Moderate'
WHEN price < 10.00 THEN 'Inexpensive'
ELSE 'Unknown'
END,
FROM titles
这里的 ELSE 捕获了所有不属于“昂贵”或“中等”或“便宜”的内容。在此处删除这些 ELSE 肯定会弄乱您的查询。