T-SQL“LineNo”到底是什么意思?保留字呢?

发布于 2024-09-29 09:21:16 字数 313 浏览 6 评论 0原文

今天,我在 SQL Server 2000 机器上针对表编写查询,在查询分析器中编写查询时,令我惊讶的是,我注意到单词 LineNo 被转换为蓝色文本。

根据 MSDN,它似乎是保留字文档,但我找不到任何关于它的信息,只是猜测它可能是一个不做任何事情的遗留保留字。

我可以毫无问题地转义字段名称,但我很好奇——有谁知道 T-SQL 中的“LineNo”实际用途是什么?

I was writing a query against a table today on a SQL Server 2000 box, and while writing the query in Query Analyzer, to my surprise I noticed the word LineNo was converted to blue text.

It appears to be a reserved word according to MSDN documentation, but I can find no information on it, just speculation that it might be a legacy reserved word that doesn't do anything.

I have no problem escaping the field name, but I'm curious -- does anyone know what "LineNo" in T-SQL is actually used for?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

南…巷孤猫 2024-10-06 09:21:16

好吧,这完全没有记录,我必须通过反复试验来弄清楚,但它设置了错误报告的行号。例如:

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 累积更新 5 (10.50.1753.0))之前仍然正确。

OK, this is completely undocumented, and I had to figure it out via trial and error, but it sets the line number for error reporting. For example:

LINENO 25

SELECT * FROM NON_EXISTENT_TABLE

The above will give you an error message, indicating an error at line 27 (instead of 3, if you convert the LINENO line to a single line comment (e.g., by prefixing it with two hyphens) ):

Msg 208, Level 16, State 1, Line 27
Invalid object name 'NON_EXISTENT_TABLE'.

This is related to similar mechanisms in programming languages, such as the #line preprocessor directives in Visual C++ and Visual C# (which are documented, by the way).

How is this useful, you may ask? Well, one use of this it to help SQL code generators that generate code from some higher level (than SQL) language and/or perform macro expansion, tie generated code lines to user code lines.

P.S., It is not a good idea to rely on undocumented features, especially when dealing with a database.

Update: This explanation is still correct up to and including the current version of SQL Server, which at the time of this writing is SQL Server 2008 R2 Cumulative Update 5 (10.50.1753.0) .

巴黎盛开的樱花 2024-10-06 09:21:16

从表中选择 [LineNo]

而不是
从表中选择行号

Select [LineNo] from Table

instead of
Select LineNo from Table

时光倒影 2024-10-06 09:21:16

根据您使用它的位置,您始终可以使用[LineNo]。例如:

select LnNo [LineNo] from OrderLines.

Depending on where you use it, you can always use [LineNo]. For example:

select LnNo [LineNo] from OrderLines.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文