错误:必须声明表变量@T

时间:2014-01-30 09:00:25

标签: sql-server-2008-r2

我必须按如下方式加入3个表

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
  必须声明表变量“@t”。

如何申报?

1 个答案:

答案 0 :(得分:1)

宣布一张桌子!您将@T声明为单个VARCHAR(MAX)变量:

DECLARE @t varchar(max)

您需要将其更改为

DECLARE @t TABLE (ColumnName1 varchar(max))

或者你需要的任何东西