如何将存储过程中的字段子集添加到表变量?

Posted

技术标签:

【中文标题】如何将存储过程中的字段子集添加到表变量?【英文标题】:How to add subset of fields from stored procedure to table variable? 【发布时间】:2012-10-26 19:33:14 【问题描述】:
Declare @tempTableVariable Table(
    email varchar(50)
)

Insert INTO @tempTableVariable 
EXEC GetData

select email
from @tempTableVariable

我收到以下错误: “列名或提供的值的数量与表定义不匹配。”

是否有一种简单的方法可以从 GetData 获取子集,而无需在表变量声明中显式声明所有字段?

【问题讨论】:

在此处查看***.com/questions/653714/… 链接描述][1] [1]:***.com/questions/653714/… 【参考方案1】:

如果您无法控制GetData 存储过程,我认为您没有任何方法可以避免必须声明表变量中的所有字段。

如果您可以控制GetData,您可以向其添加一个参数,当等于 1 时将按照您想要的方式返回结果,否则将执行当前的操作。

为了完整起见,我会提到它,但除了 INSERT EXEC 之外还有很多其他选项。 http://www.sommarskog.se/share_data.html 很好地解释了这些选项。

【讨论】:

以上是关于如何将存储过程中的字段子集添加到表变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何将列值从存储过程中的另一个表更新到表中?

将表值参数传递给具有不同字段数的存储过程

Redshift中的存储过程将数据加载到表中

mysql存储过程,选择最大值并插入值并分配给变量

我可以在存储过程中使用 if 语句将值插入到表中吗?

如何在存储过程中拆分逗号分隔的字符串?