SQL错误:列名或提供的值数量与表定义不匹配



我试图在输出子句的帮助下插入Id,但我得到这个错误:

列名或提供的值数量与表定义不匹配

CREATE TABLE #TEMP_Master_DimensionValues
(
Id int, 
[Name] varchar(max), 
[FullName] varchar(max), 
ID_DimensionHierarchyType varchar(max),
StartDate varchar(max), 
EndDate varchar(max)
) 
DECLARE @OutputTbl TABLE ([ID] INT); 
INSERT INTO #TEMP_Master_DimensionValues 
OUTPUT INSERTED.[ID] INTO @OutputTbl([ID])
SELECT 
'April01-17' [Name], 
'''Week of ''' + CONVERT(VARCHAR, (SELECT Min('2021-04-01') FROM Master_DimensionValues), 107) [FullName],
'3' [ID_DimensionHierarchyType], 
'2021-04-01' [StartDate], 
NULL [EndDate]; 

上面的选择语句是正确的,并返回一个结果,但是当我尝试进入#TEMP_Master_DimensionValues时,我无法弄清楚出了什么问题。如果有人能帮助我,我将不胜感激。

Ialways建议为explicit关于你要插入的列-所以把你的INSERT语句改成这样:

DECLARE @OutputTbl TABLE ([ID] INT); 
INSERT INTO #TEMP_Master_DimensionValues ([Name], [FullName], ID_DimensionHierarchyType, StartDate, EndDate)
OUTPUT INSERTED.[ID] INTO @OutputTbl([ID])
SELECT 
'April01-17' [Name], 
'''Week of ''' + CONVERT(VARCHAR, (SELECT Min('2021-04-01') FROM Master_DimensionValues), 107) [FullName],
'3' [ID_DimensionHierarchyType], 
'2021-04-01' [StartDate], 
NULL [EndDate]; 

同时,我强烈推荐不只是让一切都成为varchar(max)-使用最合适的数据类型-总是-所以StartDateEndDate应该是DATE(或DATETIME2(n)) -但肯定不是varchar(max)!

相关内容