2014-11-06 69 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语句