Expression de Table commune, pourquoi point-virgule?
Habituellement, dans la clause SQL Server
Common Table Expression, il y a un point-virgule devant l'instruction, comme ceci:
;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
Pourquoi?
46
demandé sur
gotqn
2011-08-04 12:05:31
1 réponses
- Pour éviter toute ambiguïté, car AVEC 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 être terminée avant un avec/CTE. Pour éviter les erreurs, la plupart des gens utilisent ;WITH
parce que nous ne savons pas ce qui est avant le CTE
Donc
DECLARE @foo int;
WITH OrderedOrders AS
(
SELECT SalesOrderID, OrderDate,
...;
Est le même que
DECLARE @foo int
;WITH OrderedOrders AS
(
SELECT SalesOrderID, OrderDate,
...;
La commande MERGE a une exigence similaire.
68
répondu
gbn
2011-08-04 08:22:54