40

lo general, en SQL Server cláusula de expresión de tabla común hay punto y coma delante de la declaración, así:Expresión de tabla común, ¿por qué punto y coma?

;WITH OrderedOrders AS --semicolon here 
(
    SELECT SalesOrderID, OrderDate, 
    ROW_NUMBER() OVER (ORDER BY OrderDate) AS 'RowNumber' 
    FROM Sales.SalesOrderHeader 
) 
SELECT * 
FROM OrderedOrders 
WHERE RowNumber BETWEEN 50 AND 60 

¿Por qué?

Respuesta

61
  • para evitar la ambigüedad, ya que con se puede utilizar en otros lugares
    ..FROM..WITH (NOLOCK)..
    RESTORE..WITH MOVE..
  • Es opcional poner fin a las declaraciones con ; en SQL Server

En conjunto, la afirmación anterior se debe terminar antes de que una CON/CTE. Para evitar errores, la mayoría de uso popular ;WITH porque no sabemos lo que está ante el CTE

Así

DECLARE @foo int; 

WITH OrderedOrders AS 
(
    SELECT SalesOrderID, OrderDate, 
...; 

es lo mismo que

DECLARE @foo int 

;WITH OrderedOrders AS 
(
    SELECT SalesOrderID, OrderDate, 
...; 

el comando Combinar tiene un requisito similar.

+0

Una respuesta rápida y concisa, muy agradable. El mío me llevaría medio día o media página (ligeramente exagerado, pero no demasiado). Los 'beneficios' de hablar inglés como segundo idioma ... –

+6

Para versiones más recientes: 'La documentación de SQL Server indica que no terminar las declaraciones de T-SQL con un punto y coma es una característica obsoleta. Esto significa que el objetivo a largo plazo es hacer cumplir el uso del punto y coma en una versión futura del producto. - 'Fundamentos de T-SQL de Miscrosoft SQL Server 2012 por Itzik Ben-Gan. – gotqn

Cuestiones relacionadas