簡體   English   中英

存儲過程中臨時表列的列名無效

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM