Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Common Table Expression, pourquoi un point-virgule ?

  • Pour éviter toute ambiguïté car WITH peut être utilisé ailleurs
    ..FROM..WITH (NOLOCK)..
    RESTORE..WITH MOVE..
  • Il est facultatif de terminer les instructions avec ; dans SQL Server

Mis ensemble, l'instruction précédente doit se terminer avant un WITH/CTE. Pour éviter les erreurs, la plupart des gens utilisent ;WITH parce qu'on ne sait pas ce qu'il y a devant le CTE

Alors

DECLARE @foo int

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

est identique à

DECLARE @foo int

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

La commande MERGE a une exigence similaire.