Что именно делает зарезервированное слово T-SQL "LineNo"? - PullRequest
33 голосов
/ 29 октября 2010

Сегодня я писал запрос к таблице в окне SQL Server 2000, и, когда я писал запрос в Query Analyzer, к своему удивлению я заметил, что слово LineNo было преобразовано в синий текст.

В соответствии с документацией MSDN, это выглядит как зарезервированное слово , но я не могу найти никакой информации, только предположение, что это может быть устаревшее зарезервированное слово, которое не делать что угодно.

У меня нет проблем с экранированием имени поля, но мне любопытно - кто-нибудь знает, для чего фактически используется "LineNo" в T-SQL?

Ответы [ 2 ]

68 голосов
/ 29 октября 2010

ОК, это полностью недокументировано, и мне пришлось выяснить это методом проб и ошибок, но он устанавливает номер строки для отчетов об ошибках. Например:

LINENO 25

SELECT * FROM NON_EXISTENT_TABLE

Вышеприведенное сообщение выдаст вам сообщение об ошибке, указывающее на ошибку в строке 27 (вместо 3, если вы преобразуете строку LINENO в однострочный комментарий (например, с помощью префикса с двумя дефисами)):

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

Это связано с аналогичными механизмами в языках программирования, такими как директивы препроцессора #line в Visual C ++ и Visual C # (кстати, задокументированы).

Как это полезно, спросите вы? Что ж, одно из его применений - помочь генераторам кода SQL, которые генерируют код из некоторого языка более высокого уровня (чем SQL) и / или выполняют макроразложение, связывать строки сгенерированного кода со строками пользовательского кода.

P.S., Не стоит полагаться на недокументированные функции, особенно при работе с базой данных.

Обновление: это объяснение остается верным вплоть до текущей версии SQL Server, включая текущую версию SQL Server 2008 R2 с накопительным обновлением 5 (10.50.1753.0).

0 голосов
/ 17 июля 2018

В зависимости от того, где вы его используете, вы всегда можете использовать [LineNo].Например:

select LnNo [LineNo] from OrderLines.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...