2014-01-30 151 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:那么你正在做其他的事情.....你可以用你的新代码更新你原来的问题吗? –