Eu sempre faço isso ao postar aqui ou no StackOverflow porque, WITH
porque a palavra-chave está sobrecarregada, o comando anterior requer um ponto e vírgula final. Se eu colar um exemplo de código que usa um CTE, inevitavelmente algum usuário o colará no código existente, e a instrução anterior não terá ponto e vírgula. Portanto, o código quebra e recebo reclamações como:
Seu código quebrou! Recebi esta mensagem de erro:
Incorrect syntax near 'WITH'
...
Embora eu queira acreditar que as pessoas estão se tornando melhores em sempre encerrar suas declarações com ponto e vírgula , prefiro evitar o ruído e incluí-lo sempre. Algumas pessoas não gostam, mas <shrug />
. Você pode incluir o ponto e vírgula antes ou depois de uma declaração válida, conforme desejar. Isso é válido:
;;;;SELECT 1;;;;;;;;;;;;SELECT 2;;;;;;;;SELECT 3;;;;;
Portanto, não há mal em haver um ponto e vírgula extra antes de uma declaração que, por definição, exige isso. É mais seguro fazê-lo, mesmo que não seja tão bonito.
Ele precisa ser redigido de maneira estranha para entender o ponto, mas "não encerrar uma declaração válida com ponto e vírgula" está realmente obsoleto desde o SQL Server 2008. Portanto, como descrevi na postagem do blog, vinculo acima, mesmo nos casos em que não é necessário ignorar um erro, ele deve ser usado sempre que válido. Você pode ver isso aqui:
http://msdn.microsoft.com/en-us/library/ms143729.aspx
(Pesquise a última página por "ponto e vírgula")
Claro que não seria o SQL Server se não houvesse exceções. Tente o seguinte:
BEGIN TRY;
SELECT 1/1;
END TRY;
BEGIN CATCH;
SELECT 1/1;
END CATCH;
Não é a única exceção à regra, mas é a que acho mais pouco intuitiva.