CREATE TABLE #TempAnnualOnline
(
TrainingStatus nvarchar(70),
FirmEmployeeID nvarchar(25),
DepartmentID nvarchar(25),
StartDate datetime,
SectionDate datetime,
TrainingSessionID uniqueidentifier
)
INSERT INTO #TempAnnualOnline
select 'Users Not Started' , '1535' , '0100' , '2017-04-17 00:00:00' , NULL , NEWID()
我已经研究了这个问题,所以我不相信它是重复的,但如果是,请标记它。
在 select 语句的最后一项上,我没有指定 GUID,而是使用 NEWID(( 函数。
当我按原样运行它时,出现此错误。
列名或提供的值的数量与表不匹配 定义。
当我从表中取出 TrainingSessionID 和 NEWID(( 时,它工作正常。
我几乎可以肯定我为选择提供了正确数量的列。
使用 NEWID(( 和插入到 SELECT 有什么我没有得到的吗?
你的代码很好。您在其他地方有问题导致此错误。
尝试显式定义插入列,看看问题是否仍然存在。
INSERT INTO #TempAnnualOnline
(TrainingStatus,
FirmEmployeeID,
DepartmentID,
StartDate,
SectionDate,
TrainingSessionID)
select 'Users Not Started' , '1535' , '0100' , '2017-04-17 00:00:00' , NULL , NEWID()
或
INSERT INTO #TempAnnualOnline
(TrainingStatus,
FirmEmployeeID,
DepartmentID,
StartDate,
SectionDate,
TrainingSessionID)
Values ('Users Not Started' , '1535' , '0100' , '2017-04-17 00:00:00' , NULL , NEWID())
我不确定为什么你的不起作用,因为它对我有用。但是,如果您想稍微调整插入,则可以使用 选择进入.额外的好处是,您无需定义临时表列。
SELECT
'Users Not Started' AS [TrainingStatus]
,'1535' AS FirmEmployeeID
,'0100' AS [DepartmentID]
,'2017-04-17 00:00:00' AS [StartDate]
,NULL AS [SectionDate]
,NEWID() AS [TrainingSessionID]
INTO #TempAnnualOnline
SELECT * FROM [#TempAnnualOnline]
DROP TABLE #TempAnnualOnline
刷新SQL Server Management Studio似乎可以解决此问题。关闭并重新打开整个内容后,我运行了这个确切的脚本,没有任何更改并且它起作用了。
奇怪。
在进行此修改之前,我已经多次执行此脚本,每次都删除并重新创建此表。
似乎只需要创建一个干净的石板。
感谢所有验证脚本语法正确的人。
此外,将来,我将调整@AlexanderHiggins,预先明确定义列以避免混淆。