Фух, спешу похвастаться
. Решил я таки эту проблемку таким образом:
CREATE PROCEDURE Proc1(@AUser char(20))
AS
IF not Exists (select *
from tempdb..sysobjects
where name='##Tmp1')
SELECT USER_LOGIN=@AUser,*
INTO ##Tmp1
FROM Tab1
ELSE
BEGIN
DELETE FROM ##Tmp1
WHERE USER_LOGIN=@AUser
INSERT INTO ##Tmp1
SELECT USER_LOGIN=@AUser,*
FROM Tab1
END
SELECT *
FROM ##Tmp1
WHERE USER_LOGIN=@AUser
Корявенько, конечно, уникальность набора в пределах базы обеспечивается логином пользователя, но это в моей ситуации вполне приемлемо. Можно вместо логина использовать @@SPID, надо подумать....
.Зато возвращается редактируемый набор и редактируй, как хошь
. А потом юзверь нажимает кнопарик "Хочу!!!" и данные ложаться в базу. Я использовал именно ВРЕМЕННУЮ таблицу (##) вместо обыкновенной из-за желания незахламлять базу. Потому что необходимость в ней (таблице) будет возникать довольно редко.
В любом случае всем АГРОМНОЕ СПАСИБО! Согласитесь, тема довольно интересная.
ЗЫ. Дабы прояснить ситуацию: вместо
"SELECT USER_LOGIN=@AUser,* INTO ##Tmp1 FROM Tab1"
у меня идет выборка из 5 таблиц c разными наворотами а-ля UNION, JOIN и т.д.