2012-06-28 15 views
8

In realtà non è un problema che sto affrontando. Ma mi chiedo solo che la prima riga nel codice scritto di seguito dovrebbe essere trattata come un errore di sintassi da SQL Server a causa della virgola in più (,) alla fine dell'elenco di colonne. Ma gestisce bene il codice. Qualcuno conosce la ragione?Perché SQL Server non tratta questo codice in modo errato?

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

presumo che si tratta di un disegno decisione di semplificare SQL dinamico, quando non è necessario omettere la virgola. Simile al motivo per cui LINQ consente un tipo di questo tipo anonimo in C#: 'new {a = 1, b = 2, c = 3,}'. –

+6

Non dovrebbe essere consentito da [la grammatica] (http://msdn.microsoft.com/en-us/library/ms174979.aspx) ma [per lo più innocuo] (https://connect.microsoft.com/SQLServer/ feedback/dettagli/273348/trailing-comma-allowed-in-create-table) –

+1

@ Martin Smith: Dipende, se n nel diagramma include 0 o meno. La sintassi non contiene definizioni (almeno nessuna trovata). – Stefan

risposta

1

Va segnalata come un errore di sintassi, ma c'è un bug in SQL Server che non tratta la virgola finale come un errore di sintassi.

Fonte: Microsoft Support (Le versioni interessate nella lista - 6, 6.5, e 2000 - sono vecchi, ma credo che sia ancora in giro perché appena ha funzionato per me nel 2008.)

Problemi correlati