2012-06-28 28 views
8

Aslında karşı karşıya olduğum bir sorun değil. Ama sadece aşağıda yazılan koddaki ilk satırının, sütunlar listesinin sonundaki ek virgül (,) nedeniyle SQL Server tarafından bir sözdizimi hatası olarak ele alınması gerektiğini merak ediyorum. Ama kodu düzgün çalışıyor. Sebebini bilen var mı?SQL Server neden bu kodu hatalı davranmıyor?

CREATE TABLE #TEMP(COL1 INT,COL2 VARCHAR,)  
INSERT INTO #TEMP VALUES (1,'A')  
SELECT * FROM #TEMP  
DROP TABLE #TEMP 
+0

virgül atlamak zorunda kalmazsanız, dinamik sql kolaylaştırmak için karar. Benzer şekilde LINQ, C#: 'new {a = 1, b = 2, c = 3,}' gibi bir anonim türe izin veriyor. –

+6

[Dilbilgisi] tarafından izin verilmemelidir (http://msdn.microsoft.com/en-us/library/ms174979.aspx) ancak [çoğunlukla zararsız] (https://connect.microsoft.com/SQLServer/ feedback/details/273348/trailing-comma-in-create-in-create-tablo) –

+1

@Martin Smith: Bu şemada n varsa 0 ya da dahil değildir. Sözdizimi tanım içermiyor (en azından bulunamadığım). – Stefan

cevap

1

Bir sözdizimi hatası olarak işaretlenmesini gerekir, ancak bir sözdizim hatası olarak sondaki virgül tedavi etmez SQL Server bir hata var.

Kaynak: Microsoft Support (etkilenen listedeki versiyonları - 6, 6.5, ve 2000 - eski, ama sadece 2008 yılında benim için çalıştı çünkü hala etrafında olduğunu tahmin) Ben bir tasarım olduğunu varsayalım