Это не проблема, с которой я сталкиваюсь. Но мне просто интересно, что первая строка в коде, написанном ниже, должна рассматриваться как синтаксическая ошибка SQL Server из-за дополнительной запятой (,) в конце списка столбцов. Но он отлично работает с кодом. Кто-нибудь знает причину?Почему SQL Server не обрабатывает этот код неустойчивым?
CREATE TABLE #TEMP(COL1 INT,COL2 VARCHAR,)
INSERT INTO #TEMP VALUES (1,'A')
SELECT * FROM #TEMP
DROP TABLE #TEMP
Я предполагаю, что это дизайн решение упростить динамический sql, когда вам не нужно пропустить запятую. Аналогично тому, как LINQ допускает такой анонимный тип в C#: 'new {a = 1, b = 2, c = 3,}'. –
Нельзя разрешить [грамматикой] (http://msdn.microsoft.com/en-us/library/ms174979.aspx), но [в основном безвредным] (https://connect.microsoft.com/SQLServer/ feedback/details/273348/trailing-comma-allowed-in-create-table) –
@Martin Smith: Это зависит, если n на диаграмме содержит 0 или нет. Синтаксис не содержит определения (по крайней мере, я не нашел). – Stefan