2

存储过程使用以下查询来获取结果并将结果返回给客户端。

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);
4

3 回答 3

2

问题的关键在于错误:

An object or column name is missing or empty.

您需要为您的@Lid字段定义一个列名,例如:

select @Lid as Lid, * 
    into Temp_CurrentProductSet
    from ...

确实意识到,使用SELECT INTO将创建一个新表。如果您尝试将值插入现有表中,则需要使用INSERT INTO SELECT.

于 2014-10-08T02:13:38.520 回答
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);
于 2014-10-08T02:13:27.043 回答
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);
于 2014-10-08T09:35:29.190 回答