2013-12-26 7 views
1

Я пытаюсь использовать предложение OUTPUT, чтобы выбрать столбец, но не удалось. Вот краткий пример,Предложение OUTPUT для SELECT столбца не работает

create table A (id int, name varchar(10)) 
create table B (id int) 
insert into A values(1,'a'),(2,'b'),(3,'c') 

declare @Inserted TABLE (ID INT, name varchar(10)); 

INSERT INTO B 
OUTPUT INSERTED.ID, a.name INTO @Inserted 
select id from a 

Я получаю эту ошибку,

The multi-part identifier "a.name" could not be bound. 

ответ

3

Предложение OUTPUT может относиться только к Inserted (и, возможно, Deleted) таблиц псевдо - может ваше заявление:

INSERT INTO B 
OUTPUT INSERTED.ID, INSERTED.name INTO @Inserted 
    SELECT id 
    FROM a 

и он должен работать нормально.

+0

получил этот пример из, OUTPUT deleted.ScrapReasonID, http://technet.microsoft.com/en-us/library/ms177564.aspx inserted.ScrapReasonID, inserted.WorkOrderID, inserted.ProductID, р. Имя INTO @MyTestVar – user960567

+0

См. Здесь p.Name используется – user960567

+1

@ user960567: true - но это также инструкция 'UPDATE', а не' INSERT'. Кажется, что с помощью 'UPDATE' вы можете ссылаться на таблицы, которые используются в предложении' FROM', тогда как с 'INSERT', который, похоже, не работает. Не спрашивайте меня ** почему ** - только что заметил ..... –

Смежные вопросы