2012-07-02 5 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를 실행 중이므로 별도의 INSERT 문을 실행하거나 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' 

감사합니다.

폴.

+0

왜 그것을 표시 했습니까? 그것은 효과적이고 올바른 해결책입니다. 여러 행을 삽입하려면 select를 사용하십시오. – PaulG

+0

그러나 문제는 구문이 아니기 때문에 SQL Server 2008을 실행하는 모든 사용자에게 'VALUES'가 일반적으로'UNION '보다 선호됩니다. 문제는 SQL Server 2008에서 OP가 작동하지 않는다는 것입니다. –

+1

예. 기능을 사용할 수 없어 개발을 지연시키는 대신 레거시 방법을 사용하십시오. – PaulG

관련 문제