2016-12-28 3 views
0

Можно вставить столбцы разных таблиц в предложении OUTPUT в операторе INSERT, например:Как использовать более одной таблицы с предложением OUTPUT?

DECLARE @insertedrecords TABLE (Id int, [Guid] uniqueidentifier); 

INSERT INTO mytable 
    (column names here...) 
OUTPUT inserted.id_no, b.[Guid] INTO @insertedrecords 
SELECT 
    column names here... 
FROM @myTVP b 

В настоящее время, используя выше, я получаю следующее сообщение об ошибке:

The multi-part identifier "b.Guid" could not be bound.

+1

Вы можете использовать:. OUTPUT inserted.id_no, вставленный [Guid] INTO @insertedrecords – cloudsafe

+0

Отправьте исходный запрос. На самом деле, вы вставляете 'b. [Guid]' в таблицу 'mytable'? –

+0

@Prdp No. 'b.Guid' не вставлен в' mytable'. –

ответ

0

Inserted специальных таблица будет содержать записи, которые вставляются в таблицу Цель таблица не все данные от Источник стол. Когда колонна из целевой таблицы не является частью Insert списка, то в OUTPUT пункте будет NULL

Так что вам нужно две разные Inserts

DECLARE @insertedrecords TABLE (Id int, [Guid] uniqueidentifier); 

INSERT INTO mytable 
    (column names here...) 
SELECT 
    column names here... 
FROM @myTVP b 

Insert into @insertedrecords(Id,Guid) 
select id_no, [Guid] 
From @myTVP 
Смежные вопросы