Хранимая процедура, сохраняющая результаты в другой таблице перед возвратом клиенту
Хранимая процедура использует запрос ниже для извлечения и возврата результатов клиенту.
select
@Lid, *
from
CurrentProductSet cps
where
cps.State = @state
and cps.ProductName in (select gbb.ProductName
from HMCGoodBetterBest gbb
where gbb.HMC_Hospital = @hospital
and gbb.HMC_Extras = @extra);
Подскажите, пожалуйста, как мне сохранить эти результаты в другой таблице для дальнейшего использования, прежде чем возвращать их клиенту. Просто не хочу получать данные дважды или использовать переменную таблицы. Я создал еще одну таблицуTemp_CurrentProductSet
".
Редактировать:
Я пытался с помощью into
предложение ниже кода, но я получаю эту ошибку:
Имя объекта или столбца отсутствует или пусто. Для операторов SELECT INTO убедитесь, что у каждого столбца есть имя. Для других операторов ищите пустые псевдонимы. Псевдонимы, определенные как "" или [], не допускаются. Измените псевдоним на допустимое имя.
Код:
select
@Lid, *
into
Temp_CurrentProductSet
from
CurrentProductSet cps
where
cps.State = @state
and cps.ProductName in (select gbb.ProductName
from HMCGoodBetterBest gbb
where gbb.HMC_Hospital = @hospital
and gbb.HMC_Extras = @extra);
3 ответа
**You need to use output clause**
insert into Temp_CurrentProductSet output Inserted.*
select
@Lid, *
from
CurrentProductSet cps
where
cps.State = @state
and cps.ProductName in (select gbb.ProductName
from HMCGoodBetterBest gbb
where gbb.HMC_Hospital = @hospital
and gbb.HMC_Extras = @extra);
Ключ к вашей проблеме в ошибке:
An object or column name is missing or empty.
Вам нужно определить имя столбца для вашего @Lid
поле, что-то вроде:
select @Lid as Lid, *
into Temp_CurrentProductSet
from ...
Понимаете, используя SELECT INTO
создаст новую таблицу. Если вы пытаетесь вставить значения в существующую таблицу, вам нужно использовать INSERT INTO SELECT
,
Как показывает ошибка, вам нужно определить псевдоним для каждого имени столбца.
Попробуйте это вместо этого,
insert into Temp_CurrentProductSet
select @Lid, *
from CurrentProductSet cps
where cps.State=@state
and
cps.ProductName in (select gbb.ProductName from HMCGoodBetterBest gbb where gbb.HMC_Hospital=@hospital and gbb.HMC_Extras=@extra);