CREATE FUNCTION dbo.GetHistoryBrand(@Query varchar(50),@TypeId int)   
RETURNS nvarchar(500) 
AS    
BEGIN      
DECLARE @HistoryStr nvarchar(500)
DECLARE @number nvarchar(500)
    Declare @Sql nvarchar(500)
    declare @sql1 nvarchar(100)  
set @number = ''
    
    set @sql1 = 'from dbo.Stock_Products where AccessoryTypeId= '+@TypeId 
    if (@Query !='')
begin
set @sql1 =@sql1 + @Query   
end 
    select  @number = @number + convert(varchar(20),Brand)+ ',' + @sql1
     return @number   
END --Brand 为int 型的消息 207,级别 16,状态 1,过程 GetHistoryBrand,第 1 行
列名 'Brand' 无效。

解决方案 »

  1.   

    你先print @number  看看你拼出了什么东西 
      

  2.   

    你用 @Query 传送到函数中的表里头没有叫做 Brand 的列.
      

  3.   

    @number值 是每查一次就把一个[Brand] +','+[Brand] 合并起来的 .这个是没有问题的.我后来增加了一个@Query查询条件后.就写成这样了./
      

  4.   

    表Stock_Products 是有叫 [Brand] 的列名的 .这个是没有问题的
      

  5.   

    你确定你的表中有Brand这一列???
      

  6.   

    你的这句应该错了。 select @number = @number + convert(varchar(20),Brand)+ ',' + @sql1
    太多参数。这句话没有意义。
    试一下这句select @number = @number + cast(Brand as varchar(20))from dbo.Stock_Products where AccessoryTypeId=1
      

  7.   

    select @number = @number + convert(varchar(20),Brand)from dbo.Stock_Products where AccessoryTypeId=1
      

  8.   

    select @number = @number + convert(varchar(20),Brand)from dbo.Stock_Products
      

  9.   

    估计是吧Brand这个字段名字写错了
      

  10.   


    select @number = @number + convert(varchar(20),Brand)+ ',' + @sql1
    这一句明显错select  @number = @number +Brand +', from tablename ' ????