2012-06-28 5 views
8

No es realmente un problema que estoy enfrentando. Pero me pregunto si la primera línea en el código escrito a continuación debe tratarse como un error de sintaxis por SQL Server debido a la coma adicional (,) al final de la lista de columnas. Pero funciona bien el código. ¿Alguien sabe el motivo?¿Por qué SQL Server no trata este código de manera errática?

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

supongo que se trata de un diseño decisión de facilitar sql dinámico, cuando no tiene que omitir la coma. Similar a por qué LINQ permite un tipo anónimo en C#: 'new {a = 1, b = 2, c = 3,}'. –

+6

No debería estar permitido por [la gramática] (http://msdn.microsoft.com/en-us/library/ms174979.aspx) pero [principalmente inofensivo] (https://connect.microsoft.com/SQLServer/ feedback/details/273348/trailing-comma-allowed-in-create-table) –

+1

@Martin Smith: Eso depende, si n en el diagrama incluye 0 o no. La sintaxis no contiene ninguna definición (al menos ninguna que encontré). – Stefan

Respuesta

1

Debe ser marcado como un error de sintaxis, pero hay un error en SQL Server que no trata la coma final como un error de sintaxis.

Fuente: Microsoft Support (Las versiones afectadas en la lista - 6, 6.5, y 2000 - son viejos, pero supongo que es todavía alrededor, ya que sólo funcionó para mí en 2008.)

Cuestiones relacionadas