Lit*_*les 35 t-sql sql-server sql-server-2000 reserved-words
我今天在SQL Server 2000的盒子上写了一个关于表的查询,在查询分析器中编写查询时,我惊讶地发现这个词LineNo被转换为蓝色文本.
根据MSDN文档,它似乎是一个保留字,但我找不到有关它的信息,只是猜测它可能是一个遗留的保留字,它没有做任何事情.
我没有问题转义字段名称,但我很好奇 - 有没有人知道T-SQL中的"LineNo"实际上用于什么?
Mic*_*eyn 70
好的,这完全没有记录,我不得不通过反复试验弄明白,但它设置了错误报告的行号.例如:
LINENO 25
SELECT * FROM NON_EXISTENT_TABLE
Run Code Online (Sandbox Code Playgroud)
上面将给出一条错误消息,指示第27行的错误(而不是3,如果您将LINENO行转换为单行注释(例如,通过在其前面添加两个连字符)):
Msg 208, Level 16, State 1, Line 27
Invalid object name 'NON_EXISTENT_TABLE'.
Run Code Online (Sandbox Code Playgroud)
这与编程语言中的类似机制有关,例如Visual C++和Visual C#中的#line预处理程序指令(顺便说一下,这些指令都有记录).
你可能会问,这有什么用?好吧,使用它来帮助SQL代码生成器从一些更高级别(比SQL)语言生成代码和/或执行宏扩展,将生成的代码行绑定到用户代码行.
PS,依靠未记录的功能并不是一个好主意,特别是在处理数据库时.
更新:此解释仍然正确,包括当前版本的SQL Server,在撰写本文时,它是SQL Server 2008 R2累积更新5(10.50.1753.0).