Her zaman buraya veya StackOverflow'a gönderirken yaparım çünkü WITH
- anahtar kelime aşırı yüklendiğinden - önceki komut sonlandırma noktalı virgül gerektirir. CTE kullanan bir kod örneği yapıştırırsam, kaçınılmaz olarak bazı kullanıcılar bunu mevcut kodlarına yapıştıracak ve önceki deyimde noktalı virgül bulunmayacaktır. Yani kod kırılıyor ve ben gibi şikayetler alıyorum:
Kodunuz bozuldu! Bu hata mesajını aldım:
Incorrect syntax near 'WITH'
...
İnsanların ifadelerini her zaman noktalı virgülle sonlandırma konusunda daha iyi hale geldiğine inanmak istesem de, gürültüyü önceden boşaltmayı ve her zaman dahil etmeyi tercih ederim. Bazı insanlar bundan hoşlanmaz, ama <shrug />
. Geçerli bir ifadeden önce veya sonra istediğiniz kadar noktalı virgül ekleyebilirsiniz. Bu geçerlidir:
;;;;SELECT 1;;;;;;;;;;;;SELECT 2;;;;;;;;SELECT 3;;;;;
Dolayısıyla, tanım gereği bunu gerektiren bir ifadeden önce ekstra bir noktalı virgül bulunmasının bir zararı yoktur. Çok güzel olmasa bile bunu yapmak daha güvenlidir.
Bu noktayı ele almak garip bir şekilde ifade edilmelidir, ancak "geçerli bir ifadeyi noktalı virgülle bitirmemek" aslında SQL Server 2008'den bu yana kullanımdan kaldırılmıştır. bir hatayı atlamak gerekli değildir, geçerli olan yerlerde kullanılmalıdır. Bunu burada görebilirsiniz:
http://msdn.microsoft.com/en-us/library/ms143729.aspx
(Son sayfada "noktalı virgül" ara)
İstisnalar olmasaydı tabii SQL Server olmazdı. Bunu dene:
BEGIN TRY;
SELECT 1/1;
END TRY;
BEGIN CATCH;
SELECT 1/1;
END CATCH;
Kuralın tek istisnası değil, ama en bilinçsiz bulduğum kural bu.