存储过程正在使用以下查询来获取并将结果返回给客户端。
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);
答案 0 :(得分:2)
问题的关键在于错误:
An object or column name is missing or empty.
您需要为@Lid
字段定义列名称,例如:
select @Lid as Lid, *
into Temp_CurrentProductSet
from ...
要意识到,使用SELECT INTO
将创建一个新表。如果您尝试将值插入现有表中,则需要使用INSERT INTO SELECT
。
答案 1 :(得分:1)
如错误所示,您需要为每个列名定义别名。
试试这个,
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);
答案 2 :(得分:1)
**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);