我有一个返回 6 列的存储过程。但我只想取 2 列并将它们插入到我的表变量中。
DECLARE @CategoryTable TABLE(
CategoryId Int NOT NULL,
Name nvarchar(255) NOT NULL
)
INSERT INTO @CategoryTable EXEC [GetAllTenantCategories] @TenantId
当我运行它时
Column name or number of supplied values does not match table definition
如何从存储过程中只插入指定的列?
我不想使用 SELECT INTO
,因为 SQL Azure 不支持它
在下面尝试并得到 Invalid object name '#Temp'
DECLARE @CategoryTable TABLE(
CategoryId Int NOT NULL,
Name nvarchar(255) NOT NULL
)
INSERT INTO #Temp EXEC [GetAllTenantCategories] 1
INSERT INTO @CategoryTable (CategoryId, Name)
SELECT CategoryId, Name from #Temp
DROP TABLE #Temp
最佳答案
您可以先创建一个temp
表,然后在您的表变量
中INSERT
所需的列。
CREATE TABLE #temp
(
your columns and datatype
)
INSERT INTO #temp
EXEC [GetAllTenantCategories] @TenantId
那么你可以,
DECLARE @CategoryTable TABLE(
CategoryId Int NOT NULL,
Name nvarchar(255) NOT NULL
)
INSERT INTO @CategoryTable (CategoryId, Name)
select CategoryId, Name from #temp
同时删除#temp 表,
DROP TABLE #temp
关于sql - 从过程中仅选择几列并插入表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15595788/