SQL SERVER 2008: Попытка вставить несколько строк с помощью одного оператора SQL - PullRequest
1 голос
/ 09 марта 2011

Мне нужно вставить более 50 строк в SQL Server 2008, и я получаю странную ошибку. Пожалуйста помоги!

Дизайн стола:

  • Имя: mod_Facilities
  • Колонны
    • faclityID, первичный ключ / индекс
    • имя объекта, nvarchar (4000)
    • средствоDescription, nvarchar (4000)
    • statusComment, nvarchar (4000)
    • isPublic, бит
    • isActive, бит
    • isDeleted, бит

Ошибка:

Сообщение 102, Уровень 15, Состояние 1, Строка 3 Неверный синтаксис рядом с ','.

Вот мой SQL-оператор

INSERT INTO mod_Facilites (facilityName,facilityDescription,isActive,isDeleted)
VALUES
('Conference Room Lower','Conference Room Lower – 25, (AV ready for meetings and info sessions)','true','false'),
('Conference Room Upper','Conference Room Upper – 21, (AV ready for meetings and info sessions)','true','false'),
('Meeting Room A','Meeting Room A – (upper theatre set up capacity  40) ','true','false'),
('Meeting Room B','Meeting Room B – (AV ready classroom set up capacity  25) ','true','false'),
('Meeting Rooms A & B','Meeting Rooms A & B – (AV ready capacity 80)','true','false'),
('OP Resource Room','OP Resource Room','true','false'),
('Climbing Wall','Climbing Wall','true','false'),
('Bouldering Wall','Bouldering Wall','true','false'),
('Entire Climbing Area','Entire Climbing Area','true','false'),
('CPR/First Aid classroom','CPR/First Aid classroom','true','false'),
('Lobby Area','Lobby Area','true','false'),
('Studio 1','Studio 1 ','true','false'),
('Studio 2','Studio 2','true','false'),
('Studio 3','Studio 3','true','false'),
('Studio 4','Studio 4','true','false'),
('Mat Studio','Mat Studio','true','false');

Ответы [ 4 ]

4 голосов
/ 09 марта 2011

Вы работаете в режиме совместимости с SQL 2008?

Возвращает ли оно 100 или меньше 100?Если оно меньше 100, значит, вы не используете SQL 2008 с уровнем совместимости

SELECT compatibility_level 
FROM sys.databases
WHERE database_id = DB_ID()
4 голосов
/ 09 марта 2011

Вы пометили этот вопрос как SQL Server 2008, но это именно та ошибка, которую вы увидите, если попробуете этот синтаксис в 2005 году или ранее.

В качестве альтернативы попробуйте:

INSERT INTO mod_Facilites 
    (facilityName,facilityDescription,isActive,isDeleted)
    SELECT 'Conference Room Lower','Conference Room Lower – 25, (AV ready for meetings and info sessions)','true','false' UNION ALL
    SELECT 'Conference Room Upper','Conference Room Upper – 21, (AV ready for meetings and info sessions)','true','false' UNION ALL
    SELECT 'Meeting Room A','Meeting Room A – (upper theatre set up capacity  40) ','true','false' UNION ALL
    SELECT 'Meeting Room B','Meeting Room B – (AV ready classroom set up capacity  25) ','true','false' UNION ALL
    SELECT 'Meeting Rooms A & B','Meeting Rooms A & B – (AV ready capacity 80)','true','false' UNION ALL
    SELECT 'OP Resource Room','OP Resource Room','true','false' UNION ALL
    SELECT 'Climbing Wall','Climbing Wall','true','false' UNION ALL
    SELECT 'Bouldering Wall','Bouldering Wall','true','false' UNION ALL
    SELECT 'Entire Climbing Area','Entire Climbing Area','true','false' UNION ALL
    SELECT 'CPR/First Aid classroom','CPR/First Aid classroom','true','false' UNION ALL
    SELECT 'Lobby Area','Lobby Area','true','false' UNION ALL
    SELECT 'Studio 1','Studio 1 ','true','false' UNION ALL
    SELECT 'Studio 2','Studio 2','true','false' UNION ALL
    SELECT 'Studio 3','Studio 3','true','false' UNION ALL
    SELECT 'Studio 4','Studio 4','true','false' UNION ALL
    SELECT 'Mat Studio','Mat Studio','true','false';
0 голосов
/ 09 марта 2011

Самый простой способ справиться с этим - изменить значения на SELECT и объединить их:

INSERT INTO mod_Facilites (facilityName,facilityDescription,isActive,isDeleted)
 SELECT 
  'Conference Room Lower', 'Conference Room Lower – 25, (AV ready for meetings  and info sessions)','true','false' UNION ALL
 SELECT 
  'Conference Room Upper','Conference Room Upper – 21, (AV ready for meetings and info sessions)','true','false' UNION ALL

... и т. Д.

0 голосов
/ 09 марта 2011

Есть ли причина, по которой это должно быть одно утверждение? Я никогда раньше не видел такого использования оператора INSERT. Я бы использовал несколько операторов или BULK INSERT или SSIS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...