这可能是我错过的一些非常微不足道的东西,但我似乎无法弄清楚为什么它不工作:
基本上,这是有效的:
DECLARE @names TABLE (name NVARCHAR(100));
INSERT INTO @names
VALUES ('John');
,但这不是:
DECLARE @names TABLE (name NVARCHAR(100));
INSERT INTO @names
VALUES ('John'), ('Jane');
我得到这个错误:
留言102,第15层,第1州,第5行
','附近语法错误。
为什么这个不行?我已经在SSMS 2008中做过几千次了
SQL Server Table Value Constructor (Transact-SQL)
在SQL Server 2008中被引入。
SQL Server 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 Server,让SQL Server决定语法是否有效。问题是,不是每个版本的SQL Server(例如SQL Server 2005)都支持插入语句的逗号分隔语法。