Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > INSERT c OUTPUT


Автор: Veroonya 23.9.2009, 07:16
Есть таблицы DATA (данные) STOP(приостановка) LINK (связь m к n между DATA и STOP).
Нужно для каждой записи из DATA вставить записи в STOP и LINK. 
 Я хочу использовать для этого INSERT INTO... OUTPUT, чтобы заполнить STOP и из OUTPUT взять данные для LINK. 
На при этом, мне нужно в OUTPUT сохранить не только вставляемые в STOP данные, но и данные из DATA
Запрос выглядит так:

Код

DECLARE @EPOUID BIGINT
DECLARE @REASON BIGINT
DECLARE @MyTableVar table(
  A_REASON    int,
  A_DATE_FINISH    datetime,
  A_TYPE int,
  OUID int
  );

SELECT
@EPOUID = 24
,@REASON = 1 

INSERT INTO STOP (A_REASON, A_DATE_FINISH, A_TYPE)
OUTPUT INSERTED.A_REASON, 
       INSERTED.A_DATE_FINISH, 
       INSERTED.A_TYPE,
       DATA.OUID
  INTO @MyTableVar

select 
@REASON as A_REASON,
PERIOD.A_LASTDATE as A_DATE_FINISH,
15 as A_TYPE
from DATA
INNER JOIN PERIOD ON PERIOD.A_SERV = DATA.OUID and
where DATA.A_EXPORTPARAMS = @EPOUID


Но при выполнении выдается ошибка 
The multi-part identifier "DATA.OUID" could not be bound.
С ошибкой коненчо все понятно, но как сделать так чтоб ее не было  smile 

Да... желательно еще и добавить в OUTPUT ID из STOP (который при вставке автоматически заполнился)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)