declare @sql nvarchar(2000)
set @sql='select @totalcount=count(id) from '+@tablename
delare @t intexec sp_executesql @sql,N'@totalcount int output',@t int outputprint @t

解决方案 »

  1.   

    笔误
    delare 
    --〉
    declare 
      

  2.   


    set @sql='select @totalcount=count(id) from '+@tablename你这样写有错吧!~@totalcount是变量你能说下我上面那句为什么错吗?
      

  3.   


    declare @totalcount int
    declare @sql nvarchar(2000)
    set @sql='select @totalcount=count(id) from '+@tablename
    exec sp_executesql @sql这样吗?但是提示@totalcount变量必须申明,可我已经申明了啊~!
      

  4.   

    create table tb  (id int,name varchar(10))
    insert into tb select 1,'a'
    insert into tb select 2,'b'
    insert into tb select 3,'c'
    insert into tb select 4,'d'declare @tbname nvarchar(20)
    set @tbname= 'tb'
    declare @i int,@sql nvarchar(1000)
    set @sql= 'select @i=count(1) from '+@tbname
    exec sp_executesql @sql,N'@i int output' ,@i out select @i
    4动态语法
      

  5.   

    谢谢你们呵呵~!是这样写的~!declare @totalcount int
    declare @sql nvarchar(2000)
    declare @t varchar(1000)set @sql='select @t=count(id) from '+@tablename
    exec sp_executesql @sql,N'@t varchar(1000) output','@totalcount int output'
    print @totalcount刚才没弄明白sp_executesql这个存储过程参数呵呵~!
      

  6.   

    11楼错了
    应该declare @totalcount int
    declare @sql nvarchar(2000)set @sql='select @t=count(id) from '+@tablename
    exec sp_executesql @sql,N'@t varchar(1000) output',@totalcount output
    print @totalcount
      

  7.   

    恩,好像有时的加int会出错有的就不会~为什么?
    还有哦,关键的是print @totalcount输出的是空值啊,怎么回事?记录数肯定是>)
      

  8.   

    正确用法:
    declare @totalcount int
    declare @sql nvarchar(2000)set @sql='select @t=count(id) from '+@tablenameEXEC sp_executesql @sql,N'@t AS INT OUTPUT',@t=@totalcount OUTPUT