Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Expressão de Tabela Comum, por que ponto e vírgula?

  • Para evitar ambiguidade porque WITH pode ser usado em outro lugar
    ..FROM..WITH (NOLOCK)..
    RESTORE..WITH MOVE..
  • É opcional encerrar instruções com ; no SQL Server

Juntos, a instrução anterior deve ser encerrada antes de um WITH/CTE. Para evitar erros, a maioria das pessoas usa ;WITH porque não sabemos o que está antes do CTE

então
DECLARE @foo int

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

é o mesmo que
DECLARE @foo int

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

O comando MERGE tem um requisito semelhante.