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)
在连接条件中引用表时,必须使用别名
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)