Expresión de Tabla Común, ¿por qué punto y coma?


Normalmente en la cláusula de expresión de la tabla común SQL Server hay punto y coma delante de la instrucción, así:

;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é?

Author: gotqn, 2011-08-04

1 answers

  • Para evitar ambigüedades porque CON se puede usar en otros lugares
    ..FROM..WITH (NOLOCK)..
    RESTORE..WITH MOVE..
  • Es opcional terminar sentencias con ; en SQL Server

En conjunto, la declaración anterior debe terminar antes de a CON/CTE. Para evitar errores, la mayoría de la gente usa ;WITH porque no sabemos qué hay antes del CTE

So

DECLARE @foo int;

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

Es lo mismo que

DECLARE @foo int

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

El comando MERGE tiene un requisito similar.

 68
Author: gbn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-04 08:22:54