eg:--存储过程带返回值
create proc test
    @tablename varchar(20),  --表名
    @total int output        --返回值
as
begin
   declare @sqltext nvarchar(2000)
   set @sqltext='select @a=count(*) from '+@tablename  
   exec sp_executesql @sqltext,'@a int output',@total    --返回@total 
endDrop proc test

解决方案 »

  1.   

    试试这样
    declare @QueryStr varchar(1000),@count varchar(1000)
    set @QueryStr='select id,mean,memo from dic'
    set @count='select count(*) from ('+@QueryStr+' ) a where memo=12'
    exec (@count)
      

  2.   

    set  @count = (select count(*) from (@QueryStr) a where memo='12')改為:
    set @count='select count(*) from ('+@QueryStr+')a where memo='''12''''
      

  3.   

    同意 paoluo(一天到晚游泳的鱼) 厉害,佩服
      

  4.   

    对不起 
    刚才出去了 谢谢大家
    可是
    按照
    paoluo(一天到晚游泳的鱼) 说的执行时出错
    过程需要参数 '@parameters' 为 'ntext/nchar/nvarchar' 类型。
    请问是怎么回事儿呀?
      

  5.   

    可能是我说的不清楚
    问题是这样子的
    举个例子
    declare @Q nvarchar(4000)
    declare @Q2 nvarchar(4000)
    declare @count int
    set @Q ='select * from Graduate'
    set @Q2 = 'select count(*) from (' + @Q + ' where Gradid>200200000)a '
    --set @Q2='select count(*) from (select * from Graduate)a'
    exec (@Q2)
    //这时可以得到查询结果 为2599
    我想把这个值赋值给变量@count
    请问该怎么做呢?
      

  6.   

    declare @Q nvarchar(4000)
    declare @Q2 nvarchar(4000)
    declare @count int
    set @Q ='select * from Graduate'
    set @Q2 = 'select @count=count(*) from (' + @Q + ' where Gradid>200200000)a '
    --set @Q2='select count(*) from (select * from Graduate)a'
    exec sp_executesql @Q2,N' @count int out', @count out
    select 结果=@count