declare @sql varchar(500,@count int,@viewname varchar(20)
set @sql='select @count=count(*) from'+ @viewname
exec(@sql) --总是报错未申明@count
这个错误怎么解决?

解决方案 »

  1.   

    declare @sql varchar(500),@count int,@viewname varchar(20)
    set @sql='select @count=count(*) from'+ @viewname
    exec(@sql)
    ......括号
      

  2.   

    declare @sql nvarchar(500,@count int,@viewname nvarchar(20)
    set @sql=N'select @count=count(*) from'+ @viewname
    exec sp_executesql @sql,N'@count int output',@count output
      

  3.   

    declare @sql varchar(500,@count int,@viewname varchar(20)
    set @sql='select '+ @count +' =count(*) from'+ @viewname
    exec(@sql) 
      

  4.   

    declare @sql varchar(500);
    declare @count int;
    declare @viewname varchar(20)
    set @sql='select @count=count(*) from'+ @viewname
    print @sql
    exec(@sql) --总是报错未申明@count
      

  5.   

    exec 执行的内容,与当前查询不是在同一个会话中,因此,无法将当前会话的变量名传递到 exec 执行的语句中去.要想传递,要使用 exec SP_EXECUTESQL 来执行.有关它的使用,请在本站查相应的帖子.
      

  6.   


    declare @sql nvarchar(500,@count int,@viewname nvarchar(20)
    set @sql=N'select @count=count(*) from'+ @viewname
    exec sp_executesql @sql,N'@count int output',@count output
    select @count 
      

  7.   

    直接见上面 牛比DBA 的回复就行了.
      

  8.   

    你这个是错的把,@count是int类型不可以直接和字符串连接的!
      

  9.   


    @count  加 ltrim() 推荐2楼。