try:
1、select @AllSum=sum(abc) from try
或者
2、把'select sum(' + @SumColumn + ') from ' + @TableName)写入存储过程,return sum(T)值

解决方案 »

  1.   

    declare @AllSum money,@sql nvarchar(200)
    set @sql=N'select @AllSum=sum(' + @SumColumn + N') from ' + @TableName
    exec sp_executesql @sql,N'@AllSum money output',@AllSum output
      

  2.   

    set  @AllSum = exec('select sum(' + @SumColumn + ') from ' + @TableName)不能执行
       @SumColumn 为传入被汇总列名
       @TableName 为传入表名
       将执行结果存入变量 @AllSum 中
       实际执行语句为 select sum(abc) from try
    --使用exec或者exec sp_executesql 须知:
    1.表名,字段名都不可以传入,必须先在提交sql string 给exec或者exec sp_executesql 之间解释出来!即必须先 set @sql=N'select @AllSum=sum(' + @SumColumn + N') from ' + @TableName这样解释出来后,给exec或者exec sp_executesql去执行
    2.exec不能像exec sp_executesql那样传入,楼上各位的例子可见到分别!
      

  3.   

    上面的朋友是对的,在sql查询分析器中你不能写这样的语句:set  @AllSum = select sum(abc) from try.这语法不通,应该是: select @AllSum=sum(abc) from try.
      

  4.   

    感谢vivianfdlpw,问题解决。能讲解参数N'@AllSum money output',@AllSum output吗?sqlserver帮助没看懂!
      

  5.   

    exec sp_executesql @sql,N'@AllSum money output',@AllSum output----分析如下
    sp_executesql共有三个参数,第一个@sql是要执行的动态SQL语句不能少,第二个'@AllSum money output'是第一个语句里用到的变量定义,第三个参数@AllSum outputsql是执行语句要输出的变量值。
      

  6.   

    回复人: badnews() ( ) 信誉:98  2005-08-09 17:26:00  得分: 0  
     
     
       感谢vivianfdlpw,问题解决。能讲解参数N'@AllSum money output',@AllSum output吗?sqlserver帮助没看懂!
    举例:
    declare @a_nam as varchar(10)
    declare @sumNam as int
    set @a_nam  = '1' 
    exec sp_executesql N'select @sumNam=count(a_nam) from a where a_nam=@a_nam',N'@a_nam varchar(10),@sumNam int output',@a_nam,@sumNam output--这里传入变量@a_nam,查询出a_nam等于@a_nam的一共有多少行,然后付给@sumNam返回!
    返回的@sumNam 比较后面加上output,N'select @sumNam=count(a_nam) from a where a_nam=@a_nam'前面的N必须大写!FYI~