SSMS 2014 - 无法将多个值插入 table 变量
SSMS 2014 - Cannot insert multiple values into table variable
这可能是我遗漏的一些微不足道的东西,但我似乎无法弄清楚为什么它不起作用:
基本上,这有效:
DECLARE @names TABLE (name NVARCHAR(100));
INSERT INTO @names
VALUES ('John');
但这不是:
DECLARE @names TABLE (name NVARCHAR(100));
INSERT INTO @names
VALUES ('John'), ('Jane');
我收到这个错误:
Msg 102, Level 15, State 1, Line 5
Incorrect syntax near ','.
为什么这行不通?我已经使用 SSMS 2008 完成了数千次此操作。
SQL 服务器 Table Value Constructor (Transact-SQL)
是在 SQL Server 2008 中引入的。
SQL 服务器 2008 及更高版本
DECLARE @names TABLE (name NVARCHAR(100));
INSERT INTO @names
VALUES
('John'),
('Jane');
SQL Server 2000 及更高版本
您需要一次使用单行插入的任何旧版本
DECLARE @names TABLE (name NVARCHAR(100));
INSERT INTO @names VALUES('John');
INSERT INTO @names VALUES('Jane');
这与 SSMS 支持什么无关 -- SSMS 只是将您输入的查询发送到 SQL 服务器并让 SQL 服务器决定语法是否有效。问题是并非 SQL Server 的每个版本(例如 SQL Server 2005)都支持插入语句的这种逗号分隔语法。
这可能是我遗漏的一些微不足道的东西,但我似乎无法弄清楚为什么它不起作用:
基本上,这有效:
DECLARE @names TABLE (name NVARCHAR(100));
INSERT INTO @names
VALUES ('John');
但这不是:
DECLARE @names TABLE (name NVARCHAR(100));
INSERT INTO @names
VALUES ('John'), ('Jane');
我收到这个错误:
Msg 102, Level 15, State 1, Line 5
Incorrect syntax near ','.
为什么这行不通?我已经使用 SSMS 2008 完成了数千次此操作。
SQL 服务器 Table Value Constructor (Transact-SQL)
是在 SQL Server 2008 中引入的。
SQL 服务器 2008 及更高版本
DECLARE @names TABLE (name NVARCHAR(100));
INSERT INTO @names
VALUES
('John'),
('Jane');
SQL Server 2000 及更高版本
您需要一次使用单行插入的任何旧版本
DECLARE @names TABLE (name NVARCHAR(100));
INSERT INTO @names VALUES('John');
INSERT INTO @names VALUES('Jane');
这与 SSMS 支持什么无关 -- SSMS 只是将您输入的查询发送到 SQL 服务器并让 SQL 服务器决定语法是否有效。问题是并非 SQL Server 的每个版本(例如 SQL Server 2005)都支持插入语句的这种逗号分隔语法。