用sp_executesql这个存储过程declare @sql varchar(8000),
@out intset @sql='select @jianshu=count(*),@ZongYS=sum(ZongYS) from
(select a.ID,b.ZongYS from '+@AJTB+' a inner join '+@FILETB+' b on    a.id=b.ajid) c
where id='+@AJID+' group by id'
exec @sql,N'@jianshu begint',@out output

解决方案 »

  1.   

    exec @sql,N'@jianshu begint',@out output
    这句不太明白,是不是打错了?
      

  2.   

    declare @sql varchar(8000),
    select @sql:='select '+@jianshu+'=count(*),'+@ZongYS+'=sum(ZongYS) from '+
    '(select a.ID,b.ZongYS from OA_DataSet_WSDAAJ a inner join OA_DataSet_WSDA b on a.id=b.ajid) c '+
    ' where id='+@AJID+
    ' group by id'exec (@sql)
      

  3.   

    呵呵
    exec sp_executesql @sql,N'@jianshu begint',@out output
      

  4.   

    @jianshu因该是输出结果吧那就应该用exec sp_executesql @sql,N'参数',参数 -----具体语法看sp_executesql的帮助
      

  5.   

    还有是错,报错为:
    过程需要参数 '@statement' 为 'ntext/nchar/nvarchar' 类型。
      

  6.   

    把这句declare @sql varchar(8000)改为declare @sql nvarchar(4000)
      

  7.   

    我修改后程序如下
    declare @AJID bigint
    declare @jianshu bigint
    declare @ZongYS bigint
    declare @sqlstr varchar(200)
    declare @AJTB varchar(100)
    declare @FILETB varchar(100)
    set @FILETB='OA_DataSet_WSDA'
    set @AJTB='OA_DataSet_WSDAAJ'
    set @AJID=1
    declare @sql nvarchar(4000),
    @out intset @sql='select @jianshu=count(*) from
    (select a.ID,b.ZongYS from '+@AJTB+' a inner join '+@FILETB+' b on    a.id=b.ajid) c
    where id='+convert(varchar(50),@AJID)+' group by id'
    exec sp_executesql @sql,N'@jianshu bigint output',@out output
    可以运行成功,但是什么返回值都没有啊?我是需要得到count(*)也就是@jianshu的
    另外,我其实需要两个值@jianshu和@ZongYS,这里我只设了@jianshu我该如何加上@ZongYS
      

  8.   

    exec sp_executesql @sql,N'@jianshu bigint output',@out outputN'@jianshu bigint output' 单引号里面是参数 ,你可加要输出的参数 N'@jianshu bigint output,@ZongYS int' @out就是输出的参数 你用select @out 可以得到
    可以是多个@out1,@out2