type reservadas palabras sql-server tsql sql-server-2000 reserved-words

sql server - reservadas - ¿Qué hace exactamente la palabra reservada T-SQL "LineNo"?



postgresql palabras reservadas (2)

Dependiendo de dónde lo use, siempre puede usar [LineNo] . Por ejemplo:

select LnNo [LineNo] from OrderLines.

Estaba escribiendo una consulta en una tabla hoy en un cuadro de SQL Server 2000, y mientras escribía la consulta en el Analizador de consultas, para mi sorpresa noté que la palabra LineNo se convirtió en texto azul.

Parece ser una palabra reservada según la documentación de MSDN, pero no puedo encontrar información sobre ella, solo especulación de que podría tratarse de una palabra reservada heredada que no hace nada.

No tengo problemas para escapar del nombre del campo, pero tengo curiosidad: ¿alguien sabe para qué se usa realmente "LineNo" en T-SQL?


OK, esto está completamente indocumentado, y tuve que resolverlo a través de prueba y error, pero establece el número de línea para el informe de errores. Por ejemplo:

LINENO 25 SELECT * FROM NON_EXISTENT_TABLE

Lo anterior le dará un mensaje de error, que indica un error en la línea 27 (en lugar de 3, si convierte la línea LINENO en un comentario de una sola línea (por ejemplo, prefijando con dos guiones)):

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

Esto está relacionado con mecanismos similares en lenguajes de programación, como las directivas de preprocesador #line en Visual C ++ y Visual C # (que están documentadas, por cierto).

¿Cómo es esto útil, puedes preguntar? Bueno, un uso de esto para ayudar a los generadores de código SQL que generan código desde un lenguaje de nivel superior (que SQL) y / o realizan expansión macro, vinculan líneas de código generadas a líneas de código de usuario.

PD: No es una buena idea confiar en funciones no documentadas, especialmente cuando se trata de una base de datos.

Actualización: esta explicación sigue siendo correcta hasta e incluyendo la versión actual de SQL Server, que en el momento de escribir esto es SQL Server 2008 R2 Actualización acumulativa 5 (10.50.1753.0).