2017-06-30 19 views
0
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() 

我研究了這個問題,所以我不相信它是重複的,但請標記它是否是。提供的值的列名或數量與使用NEWID的表定義不匹配()

在選擇語句的最後一項,而不是指定一個GUID我有NEWID()函數。

當我運行它的方式,我得到這個錯誤。

列名或提供的值的數量與表 的定義不匹配。

當我將TrainingSessionID帶出表和NEWID()它工作正常。

我幾乎可以肯定,我正在向選擇提供適量的列。

是否有一些關於使用NEWID()與INSERT INTO SELECT,我沒有得到?

+4

適合我。什麼版本的SQL Server和如何/從你在做什麼? –

+0

我沒有得到那個錯誤...查詢運行良好 – scsimon

+0

您發佈的代碼對我來說運行良好。你是否得到這個腳本的錯誤,或者它是使用永久表的真正查詢的簡化版本。如果是永久表,錯誤可能是由於插入觸發代碼而不是查詢本身。 –

回答

1

您的代碼沒問題。您在其他地方發生錯誤導致此錯誤。

嘗試顯式定義插入列並查看問題是否仍然存在。

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()) 
0

我不確定你爲什麼不工作,因爲它對我有用。但是,如果你想微調你的插入,你可以使用SELECT INTO。額外的獎勵,你不需要定義臨時表列。

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 
+0

我剛剛刷新了我的環境,關閉了Mangament Studio,然後重新啓動了腳本並且它正在工作。非常奇怪,這是說謝謝你的答案。預先定義臨時表列是一種痛苦。我注意到AS子句沒有明確的類型。 SQL是否會推斷出這些類型? – Godwin

+0

是的,它會遇到那個null的問題,它看起來像默認它爲INT。 –

+1

如果你在選擇這個方法的列中進行轉換,將會在你的臨時表中生成一個類型。例如'select cast('1'as bit)[BitValue] into#TempAnnualOnline'將在臨時表中創建一個位列 –

0

刷新SQL Server Management Studio中似乎解決了這個問題。關閉並重新打開整個事情後,我運行了這個確切的腳本,沒有任何變化,它的工作。

奇數。

在進行此修改之前,我已經多次執行了此腳本,每次都刪除並重新創建此表。

似乎只需要創建一個乾淨的石板。

感謝所有驗證腳本的人都是正確的語法。

同樣在未來,我會調整@AlexanderHiggins,明確定義列的前面,以避免混淆。

相關問題