Kunjammu Ответов: 1

Получить данные из Select в предложении output инструкции Insert


У меня есть запрос, как показано ниже

INSERT INTO iProc.TblContracItemDt
	(
		ClientId, ContractId, ItemId, ItemPkgId, IsOpenCont, OpenBasePrice, IsActive, CreatedBy, CreatedOn, ModifiedBy, ModifiedOn, IsDelete
	) 
	OUTPUT INSERTED.ContItemDtId,INSERTED.ItemId,a.ItemLineNo INTO @ContracItemDtOutput 
	
	SELECT ClientId, @Pid, ItemId, ItemPkgId, IsOpenCont, OpenBasePrice, IsActive, CreatedBy, GETDATE() AS CreatedOn, ModifiedBy, GETDATE() AS ModifiedOn, IsDelete FROM @TVPContracItemDt a


при выполнении этой операции возникает следующая ошибка

Msg 4104, Level 16, State 1, Procedure Usp_TblContractInsert, Line 100 [Batch Start Line 7]
The multi-part identifier "a.ItemLineNo" could not be bound.


пожалуйста, помогите мне решить эту проблему

Что я уже пробовал:

Я попытался выполнить запрос .
INSERT INTO iProc.TblContracItemDt
	(
		ClientId, ContractId, ItemId, ItemPkgId, IsOpenCont, OpenBasePrice, IsActive, CreatedBy, CreatedOn, ModifiedBy, ModifiedOn, IsDelete
	) 
	OUTPUT INSERTED.ContItemDtId,INSERTED.ItemId,a.ItemLineNo INTO @ContracItemDtOutput 
	
	SELECT ClientId, @Pid, ItemId, ItemPkgId, IsOpenCont, OpenBasePrice, IsActive, CreatedBy, GETDATE() AS CreatedOn, ModifiedBy, GETDATE() AS ModifiedOn, IsDelete FROM @TVPContracItemDt a
но эта ошибка показывает

CHill60

Вы не можете использовать столбцы из SELECT, только из INSERTED. Поскольку вы не вставляете ItemLineNo в таблицу, вы не можете ссылаться на него в выходных данных.

1 Ответов

Рейтинг:
0

mudgilsks

Пожалуйста, удалите a.Itemlineno из выходной вставленной строки. Это сработает