2014-11-06 189 views
0

我不斷收到此錯誤,但我不知道爲什麼,因爲我已經聲明瞭該變量。SQL「必須聲明標量變量」

DECLARE @SizeAttributeTable TABLE (
    Id int NOT NULL identity(0,1), 
    PpamId int, PvavId int, 
    AttributeName varchar(20), 
    AttributeValue varchar(50), 
    ProductId int 
) 


INSERT INTO @SizeAttributeTable (PpamId, PvavId, AttributeName, AttributeValue, ProductId) 
    SELECT 
     ppam.Id, pvav.ProductVariantAttributeId, pa.Name, pvav.Name, p.Id 
    FROM 
     ProductVariantAttributevalue pvav, Product_ProductAttribute_Mapping ppam, Product p, ProductAttribute pa 
    WHERE 
     [pvav].ProductVariantAttributeId = [ppam].Id 
     AND [p].Id = ppam.ProductId 
     AND [pa].Id = [ppam].ProductAttributeId 
     AND pa.Name = 'Size' 
    ORDER BY 
     p.Id, pvav.Id, pvav.Name 

print(@SizeAttributeTable) --error points here 

任何人都可以告訴我嗎?謝謝

+0

*標量*是關鍵點。 *標量*變量包含一個*單個*值。 – 2014-11-06 19:20:23

+0

[壞習慣踢:使用舊式JOIN](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins。 aspx) - 在ANSI - ** 92 ** SQL標準(**超過20年前的**)中,舊式*逗號分隔的表*樣式列表被替換爲* proper * ANSI'JOIN'語法它的使用是不鼓勵的 – 2014-11-06 19:42:20

回答

4

你不能「打印」一個表,你可以SELECT * FROM @SizeAttributeTable雖然。

Print通常是用於顯示不是像表其它數據類型的單個值:表值變量是SQL Server禁止

DECLARE @SomeString VARCHAR(20) = 'Test Print' 
PRINT(@SomeString) 
0

打印。嘗試使用SELECT語句