必须声明标量变量

Kav*_*tha 3 sql sql-server-2008

首先,我创建了一个包含一列的内存表,并使用这些列值,我有一个内部连接与另一个表.这样做我收到此错误:

必须声明标量变量@Temporary.

谁能解释我哪里错了?

DECLARE @ID INT
Declare @Temporary Table
(
AccountID INT
)  

DECLARE cur CURSOR FOR

SELECT DISTINCT ParentItem from ItemBillOfMaterial

OPEN cur

FETCH NEXT FROM cur INTO @ID;

WHILE @@FETCH_STATUS = 0

BEGIN 

Insert into @Temporary Values(@ID)  

FETCH NEXT FROM cur INTO @ID;

END

SELECT UOM FROM Item

INNER JOIN @Temporary

ON Item.ItemID=@Temporary.AccountID

CLOSE cur;

DEALLOCATE cur;
Run Code Online (Sandbox Code Playgroud)

Tob*_*oby 6

在连接条件中引用表时,必须使用别名

SELECT UOM FROM Item
INNER JOIN @Temporary t
ON Item.ItemID=t.AccountID
Run Code Online (Sandbox Code Playgroud)

虽然这可以解决您遇到的问题,但您不需要临时表或游标.此查询可以重写为:

SELECT UOM 
FROM Item
WHERE ItemID IN (SELECT DISTINCT ParentItem FROM ItemBillOfMaterial)
Run Code Online (Sandbox Code Playgroud)