Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2009, 08:51   #1
Veroonya
Пользователь
 
Аватар для Veroonya
 
Регистрация: 09.10.2008
Сообщений: 30
По умолчанию INSERT c OUTPUT

Есть таблицы 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.
С ошибкой коненчо все понятно, но как сделать так чтоб ее не было
Veroonya вне форума Ответить с цитированием
Старый 23.09.2009, 10:52   #2
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

Серфинг по нэту и изучение msdn говорят следующее:
Цитата:
from_table_name
Is a column prefix that specifies a table included in the FROM clause of a DELETE or UPDATE statement that is used to specify the rows to update or delete.
Т.е. Вы не можете использовать подобный синтаксис OUTPUT в сочетании с INSERT конструкцией.
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Старый 23.09.2009, 11:25   #3
Veroonya
Пользователь
 
Аватар для Veroonya
 
Регистрация: 09.10.2008
Сообщений: 30
По умолчанию

Можете предложить альтернативный метод ?
Veroonya вне форума Ответить с цитированием
Старый 23.09.2009, 11:38   #4
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

Повесить триггер AFTER INSERT на табицу STOP, к примеру.
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Console Output Redirection, PeekNamedPipe d0vgan Win Api 7 05.09.2021 13:57
процедура Insert Morgana БД в Delphi 13 12.08.2009 17:08
Insert - ? Evgenii БД в Delphi 2 06.07.2009 02:24
Вопрос по ввыводу данных в output.txt C++ Jugger Общие вопросы C/C++ 2 31.01.2008 16:14
Выполнение хранимой процедуры с output параметром Иванчо БД в Delphi 5 26.10.2007 14:59