Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 insert output в MS SQL 2005  [new]
Виталий Белик
Member

Откуда:
Сообщений: 142
Всем доброго.
Мне нужно после вставки в таблицу получить значение поля ID, которое identity для последующего его использования в следующем INSERT запросе в другую таблицу.
Пробую делать так:
 insert into Улицы  
 output inserted.id 
 into @lStreet
 values (@Street,'',@Sity)

где
declare  @lStreet table (id int) 

Как теперь мне использовать в следующих запросах @lStreet.id?
Попытки типа
 insert into Города
 values (@Naim,@lStreet.id)

нарываются на ошибку
автор
Необходимо объявить скалярную переменную @lStreet


Как мне использовать полученный OUTPUT результат в подальших запросах?
27 сен 12, 15:13    [13233002]     Ответить | Цитировать Сообщить модератору
 Re: insert output в MS SQL 2005  [new]
Glory
Member

Откуда:
Сообщений: 104751
Виталий Белик
Как теперь мне использовать в следующих запросах @lStreet.id?

Как обращение к таблице. Это же табличная переменная, а не скалярная

Сообщение было отредактировано: 27 сен 12, 15:19
27 сен 12, 15:18    [13233073]     Ответить | Цитировать Сообщить модератору
 Re: insert output в MS SQL 2005  [new]
pkpkpk
Guest
 select @Naim, id
 from @lStreet

?
27 сен 12, 15:19    [13233085]     Ответить | Цитировать Сообщить модератору
 Re: insert output в MS SQL 2005  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Виталий Белик,

во-первых, надо явно перечислять поля, в которые идёт вставка (например, у таблицы [Улицы]).
Во-вторых, вставить можно как из VALUES, так и из SELECTа.
В данном случае VALUES не подходит, ибо таблицы должны быть обязательно объявлены во FROM (z имею в виду @Street).
27 сен 12, 15:19    [13233087]     Ответить | Цитировать Сообщить модератору
 Re: insert output в MS SQL 2005  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Виталий Белик,

надо бы ещё про триггеры таблицы [Улицы] Вас спросить,
ибо это может влиять на значения inserted.id.
Ну да ладно
27 сен 12, 15:22    [13233117]     Ответить | Цитировать Сообщить модератору
 Re: insert output в MS SQL 2005  [new]
Виталий Белик
Member

Откуда:
Сообщений: 142
Имеется ввиду это:
 insert into Улицы values (@Street,'',@Sity)
 insert into Города values(@Naim,(select max(id) from Улицы))

?

Если да то ошибка "Допускаются только скалярные выражения"
27 сен 12, 15:28    [13233177]     Ответить | Цитировать Сообщить модератору
 Re: insert output в MS SQL 2005  [new]
Виталий Белик
Member

Откуда:
Сообщений: 142
автор
надо бы ещё про триггеры таблицы [Улицы] Вас спросить,

Понял. Триггеров нет. И не предполагается на эти таблицы.
27 сен 12, 15:29    [13233184]     Ответить | Цитировать Сообщить модератору
 Re: insert output в MS SQL 2005  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Виталий Белик,

документацией принципиально не пользуетесь?
Статью проо INSERT прочитать слабО?
27 сен 12, 15:32    [13233206]     Ответить | Цитировать Сообщить модератору
 Re: insert output в MS SQL 2005  [new]
Виталий Белик
Member

Откуда:
Сообщений: 142
Ладно, понял.
Тема закрыта.
27 сен 12, 16:27    [13233725]     Ответить | Цитировать Сообщить модератору
 Re: insert output в MS SQL 2005  [new]
Gustly
Member

Откуда:
Сообщений: 1426
Больше часа разбирался, столько информации перерыл и все таки нашел, оказалось все очень просто:

На
ADOQuery вешаем INSERT Combo1(NAME) OUTPUT INSERTED.id VALUES('asd')
Потом
ADOQuery.OPEN
И потом просто
ADOQuery.FieldByName('id').Value
15 окт 12, 22:53    [13323100]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить