2012-07-02 172 views
4
INSERT INTO [Temp].[dbo].[Student] 
    ([Fname], [Lname], [Gender]) 
    VALUES 
    (N'Aname', N'Alname', N'Male') 
    GO 

此代码workes罚款,但是当我尝试添加多个值它给了我一个错误附近有语法错误“”

Error: Incorrect syntax near ','.

USE TEMP 
GO 

INSERT INTO [Temp].[dbo].[Student] 
([Fname], [Lname], [Gender]) 
VALUES 
(N'Aname', N'Alname', N'Male'), 
(N'Bname', N'Blname', N'Male') 
GO 
+4

你确定你已经在查询中键入了你正在使用的查询吗?它可以在我的机器上正常工作......或者您正在运行SQL2005实例 – Dave

+6

您确定您正在运行SQL Server 2008吗? “SELECT @@ VERSION”返回什么? – AakashM

+0

如果您在2008年运行,请检查实例的兼容性设置。 –

回答

14

为了使用多行VALUES(),()语法,您需要运行SQL Server 2008(或更新版本)。

由于您运行的是SQL Server 2005,因此需要运行单独的插入语句,使用UNION/UNION ALL或升级实例(它与Management Studio分开,它只是用于连接到实例的客户端工具运行任意数量的SQL Server版本)。

+0

你能提供这个语法吗? – James

6

你可以这样来做:

insert into [Temp].[dbo].[Student] 
select 'Aname', 'Alname', 'AMale' 
union all 
select 'Bname', 'BAlname', 'BMale' 

etc etc

谢谢

Paul。

+0

为什么它被标记?这是一个工作和正确的解决方案。要插入多行,请使用select。 – PaulG

+0

但问题不在于语法,对于运行SQL Server 2008的任何人来说'VALUES'通常比'UNION'更受欢迎。问题是OP不在SQL Server 2008上。 –

+1

是的,我收集了这个,所以不是因为功能不可用而拖延开发,而是使用传统的方法来实现它。 – PaulG