2014-01-30 196 views
1

我不得不加入3個表如下錯誤:必須聲明表變量@T

DECLARE @columnHeaders1 NVARCHAR (MAX), @t varchar(max) 

SELECT 
    @columnHeaders1 = COALESCE (@columnHeaders1 + ',[' + LocationName + ']', '[' + LocationName + ']') 
FROM 
    (SELECT DISTINCT LocationName 
     FROM StockMaster 
     JOIN @t ON @t.PartNo = StockMaster.PartNo 
     JOIN Locations ON StockMaster.LocationId = Locations.LocationId 
     WHERE substring(StockMaster.PartNo, 1, 2) = 01 
     AND StockMaster.Quantity > 0) PC 

PRINT @columnHeaders1 

這裏@t是被作爲一個參數傳遞的表名,但它示出了下面的錯誤

Msg 1087, Level 16, State 1, Line 2
Must declare the table variable "@t".

如何申報?

回答

1

你是不是宣佈表!你聲明@T作爲一個單一的VARCHAR(MAX)變量:

DECLARE @t varchar(max) 

您需要將此更改爲類似

DECLARE @t TABLE (ColumnName1 varchar(max)) 

或不管它是什麼,你需要

+1

我試了一下你的建議,但它再次提供相同的錯誤。 – Guna

+0

@ user3234884:那麼你正在做其他的事情.....你可以用你的新代碼更新你原來的問題嗎? –