繁体   English   中英

将表传递给存储过程会导致Invalid column错误

[英]Pass Table to a stored Procedure give an error with Invalid column

我已经编写了一个存储过程(usp_Roll_UP),它将从其他过程中调用。 我收到以下错误消息。 我将该数据复制到#temp表中,并通过表中的列之一进行查询。 我使用#Temp的原因。 我需要删除该过程中处理的数据。

我收到以下错误消息:

消息207,级别16,状态1,过程usp_Roll_UP,第38行[Batch Start Line 235]
无效的列名“ T_Week”。

CREATE TYPE [dbo].[Usr_defined_Table ] AS TABLE(
    [T_Year] [int] NULL,
    [T_Week] [int] NULL,
    [Measure] [varchar](100) NULL,
    [Amount] [numeric](16, 2) NULL
)

Create Procedure usp_Roll_UP
   @AllData Usr_defined_Table READONLY
AS
BEGIN
    SELECT * INTO #Temp FROM @AllData 
    SELECT * FROM @AllData  WHERE [T_Week] =5  -- Works give the records
    SELECT * FROM #Temp WHERE [T_Week] =5  -- give me an error with 

--- More business logic here. as the records are processed, i need to delete ---the data from this #Temp
END

Thies表示在您尝试通过执行Create Procedure来保存您的sp的会话中,已经有一个名为#Temp临时表,该表没有名为T_Week列。

在执行create proc之前,只需删除该表即可。

您的create proc无法通过解析,因为已经有名称相同但结构不同的临时表。

我认为您不能保持相同的名字。

SELECT * INTO #AllData FROM @AllData我从上一行更改为下一行,解决了此问题

选择* INTO #Temp FROM @AllData

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM