Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Common Table Expression, perché punto e virgola?

  • Per evitare ambiguità perché WITH può essere utilizzato altrove
    ..FROM..WITH (NOLOCK)..
    RESTORE..WITH MOVE..
  • È facoltativo terminare le istruzioni con ; in SQL Server

Messo insieme, l'istruzione precedente deve essere terminata prima di un WITH/CTE. Per evitare errori, la maggior parte delle persone usa ;WITH perché non sappiamo cosa c'è prima del CTE

Quindi

DECLARE @foo int

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

è uguale a

DECLARE @foo int

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

Il comando UNISCI ha un requisito simile.