[英]Invalid Column name for a Temporary table column in a stored procedure
我有一個存儲過程,其中創建了一個臨時表:
我收到一條錯誤消息:
無效的列名“ValFromUser”。
這是為什么? 為什么我只為 ValFromuser 收到此錯誤,而沒有其他列?我如何才能擺脫這個錯誤?
CREATE Procedure [dbo].[OutputProcedure]
--declarations here
AS
BEGIN
SET NOCOUNT ON
IF OBJECT_ID('tempdb.dbo.##Temp2') Is null
Begin
create table ##Temp2
(
Rownumber int not null,
ValFromUser nvarchar(30),
Percentage decimal(18, 4) not null
);
select *
from dbo.ResultsStored
join (
select
Rownumber,
(SUM(Percentage) / @cnt) as Perc
from ##Temp2
GROUP BY
Rownumber, ValFromUser
) t -- Invalid column Name ValFromUser error here
on dbo.ResultsStored.RowId = t.Rownumber
and dbo.ResultsStored.HashedKey = HASHBYTES('MD5', @StringConcat)
end
End
Insert into dbo.ResultsStored( searchSerial,FinalSearchSeral, StringSearched, RowId,PercentMatch, HashedKey)
select @searchNumber, @searchNumber, dbo.encrypt(@StringConcat), RowNumber, (SUM(Percentage)/@cnt) as Percentage , HASHBYTES('MD5', @StringConcat)
FROM ##Temp2 GROUP BY RowNumber, ValFromUser --Here
end
1:嘗試選擇##Temp2 表並檢查是否顯示了 ValFromUser 列。 如果沒有刪除 ##Temp 表並再次執行上述語句。
2:去掉“ Percentage decimal(18, 4) not null, ”最后一列后的逗號(,)
create table ##Temp2
(
Rownumber int not null,
ValFromUser nvarchar(30),
--ColumnName nvarchar(30),
--ValFromFunc decimal(18, 4),
--FuncWeight decimal(18, 4),
Percentage decimal(18, 4) not null
);
3:在select語句中包含ValFromUser列
Select Rownumber, ValFromUser, (SUM(Percentage) / @cnt) as Perc
FROM ##Temp2
GROUP BY Rownumber, ValFromUser
嘗試上述步驟,讓我知道它是否解決了您的問題?
在 create table 語句的最后一行。 刪除逗號(,)並再次回復您的結果。
create table ##Temp2
(
Rownumber int not null,
ValFromUser nvarchar(30),
--ColumnName nvarchar(30),
--ValFromFunc decimal(18, 4),
--FuncWeight decimal(18, 4),
Percentage decimal(18, 4) not null
);
我也遇到過這個。 我的 sp 中有一個臨時表出現錯誤:
Invalid column name <column name>
當我遇到這個時,我只是在運行存儲過程。 但是,存儲過程是在查詢窗口上運行的,我也在其中測試了代碼(針對另一個錯誤),其中我聲明了臨時表但沒有指定錯誤字段(為簡潔起見)。
當我重命名 sp 的臨時表時,問題就消失了。 因此,我猜測 sp 正在調用此臨時表,而不是我在 sp 中指定的表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.