我有一個更新語句像這樣使用一個變量:TSQL - 在更新語句
UPDATE CompaniesHouse SET
LastOccurrence =(select top 1 Id from Dataset ORDER BY RowNum DESC),
CompanyName =QCompaniesHouseUpdate.CompanyName,
FirmId =QCompaniesHouseUpdate.FirmId,
...
PreviousCompanyDate =QCompaniesHouseUpdate.PreviousCompanyDate,
PreviousCompanyName =QCompaniesHouseUpdate.PreviousCompanyName
FROM QCompaniesHouseUpdate Join CompaniesHouse
ON (QCompaniesHouseUpdate.FirmId=CompaniesHouse.FirmId)
GO
我試圖嵌套查詢保存到一個變量,使用像,而不是這一點,但它沒有工作:
declare @dataset int
select top 1 @dataset = Id from Dataset ORDER BY RowNum DESC
當我試圖使用變量來代替嵌套查詢我得到的消息:
Msg 137, Level 15, State 2, Line 135
Must declare the scalar variable "@dataset".
這並不重要,但也有其他地方它也會有用。我也有點擔心,每次更新都會針對每次插入進行評估,並在稍後的代碼中進行評估。 如果我需要更改代碼,那麼在代碼頂部聲明一次也是有用的。
你執行不同批次的更新語句?不明白爲什麼你會得到這個錯誤,否則。 –
你已經顯示看起來很好。在猜測中,你沒有*顯示的位是錯誤的原因 - 你在'declare' /'select'和'update'之間放置了一個'GO'嗎? –
您可能需要創建一個變量來保存sql字符串,類似Set @ sql ='Update ...'+ @dataset +'查詢的其餘部分' – Jayvee