我今天在 SQL Server 2000 机器上针对表编写查询,在查询分析器中编写查询时,令我惊讶的是,我注意到单词LineNo
被转换为蓝色文本。
根据 MSDN 文档,它似乎是一个保留字,但我找不到任何信息,只是猜测它可能是一个没有任何作用的遗留保留字。
转义字段名称没有问题,但我很好奇——有谁知道 T-SQL 中的“LineNo”实际上是用来做什么的?
我今天在 SQL Server 2000 机器上针对表编写查询,在查询分析器中编写查询时,令我惊讶的是,我注意到单词LineNo
被转换为蓝色文本。
根据 MSDN 文档,它似乎是一个保留字,但我找不到任何信息,只是猜测它可能是一个没有任何作用的遗留保留字。
转义字段名称没有问题,但我很好奇——有谁知道 T-SQL 中的“LineNo”实际上是用来做什么的?
好的,这完全没有记录,我必须通过反复试验来解决,但它设置了错误报告的行号。例如:
LINENO 25
SELECT * FROM NON_EXISTENT_TABLE
以上将给您一条错误消息,指示第 27 行有错误(而不是 3,如果您将 LINENO 行转换为单行注释(例如,通过在其前面加上两个连字符):
Msg 208, Level 16, State 1, Line 27
Invalid object name 'NON_EXISTENT_TABLE'.
这与编程语言中的类似机制有关,例如 Visual C++ 和 Visual C# 中的#line 预处理器指令(顺便说一下,它们已记录在案)。
你可能会问,这有什么用?好吧,它的一种用途是帮助 SQL 代码生成器从某种更高级别(比 SQL)语言生成代码和/或执行宏扩展,将生成的代码行与用户代码行联系起来。
PS,依赖未记录的功能不是一个好主意,尤其是在处理数据库时。
更新:此解释在 SQL Server 的当前版本(包括在撰写本文时为 SQL Server 2008 R2 Cumulative Update 5 (10.50.1753.0) )之前仍然是正确的。
根据您使用它的位置,您始终可以使用[LineNo]
. 例如:
select LnNo [LineNo] from OrderLines.