CREATE procedure Ground_table @Ye varchar(10), @Stcode varchar(10)
as
declare @i int,@str varchar(1000),@count int, @name varchar(50
...
select @avg =avg('+@name+') from base_groundwater where year(ye) = @ye and stcode = @stcode and @name >'0'
...
就是avg()函数里的列是参数
我这样些 报 avg函数不能以varchar数据类型作为参数

解决方案 »

  1.   

    avg()函数  的参数必须是数字
    不然怎么求平均值
    Avg
    返回在某一集合上对数值表达式求得的平均值。语法
    Avg(«Set»[, «Numeric Expression»])
      

  2.   

    我的@name 代表列名
    怎么写啊?
      

  3.   

    CREATE procedure Ground_table 
    @Ye varchar(10), 
    @Stcode varchar(10),
    @avg 类型 output
    as
    declare @i int,
            @str varchar(1000),
            @count int, 
            @name varchar(50)
            --此处不再定义@avg
    ...
    exec('select '+@avg+' =avg('+@name+') from base_groundwater where year(ye) = '+@ye+' and stcode = '+@stcode+' and '+@name+' >''0'''
      

  4.   

    @avg 可以不是output
    直接把 exec 的结果 赋给 @avg