declare @count int
declare @table varchar(50)
set @table = 'webgame_sys_user'
exec('SELECT '+@count+' = COUNT(user_id) FROM '+ @table)
print @count提示=号附近有语法错误 ?

解决方案 »

  1.   

    --如何将exec执行结果放入变量中? declare @num int, @sql nvarchar(4000) 
    set @sql='select @a=count(*) from tableName ' 
    exec sp_executesql @sql,N'@a int output',@num output 
    select @num 
      

  2.   

    declare @count int
    declare @table varchar(50)
    declare @sql nvarchar(2000)
    set @table = 'webgame_sys_user'
    set @sql = 'SELECT @count = COUNT(user_id) FROM '+ @table
    EXEC sp_executesql @sql,N'@count int output',@count output
    print @count
      

  3.   

    declare @count int, @sql Nvarchar(1000)
    declare @table varchar(50)
    set @table = 'webgame_sys_user'
    set @sql = ' SELECT @count = COUNT(user_id) FROM '+ @table
    exec sp_executesql @sql, N'@count int output', @count output
    print @count
      

  4.   

    sp_executesql
    執行可以重新使用許多次或已經動態建立的 Transact-SQL 陳述式或批次。Transact-SQL 陳述式或批次可以包含內嵌參數。語法
    sp_executesql [@stmt =] stmt
    [
        {, [@params =] N'@parameter_name  data_type [,...n]' }
        {, [@param1 =] 'value1' [,...n] }
    ]
      

  5.   

    declare @count int, @sql nvarchar(4000) declare @table varchar(50)set @table = 'webgame_sys_user'set @sql='select @a=count(user_id) from '  + @table
    exec sp_executesql @sql,N'@a int output',@count output 
    select @count 
      

  6.   

    或者這樣也可以declare @count int
    declare @table varchar(50)
    set @table = 'webgame_sys_user'
    exec('SELECT user_id FROM '+ @table)
    select @count = @@ROWCOUNT
    print @count
      

  7.   

    hellowork(一两清风) ( ) 信誉:100    Blog   加为好友  2007-06-01 11:30:38  得分: 0  
     
     
       paoluo,好久不见!
      
     
    -------
    好久不見, ;)
      

  8.   

    那样是可以  我的表名也是作为参数传递的
    原本是这样的
    DECLARE @LINECOUNT INTexec('SELECT '+ @LINECOUNT +'= COUNT(user_id) FROM '+ @table_name)IF @LINECOUNT <= @PAGE_SIZE只想得到@LINECOUNT  为什么得不到 非要向你那样改吗
      

  9.   

    用sp_executesql 得到返回参数
      

  10.   

    declare @count int, @sql nvarchar(4000) declare @table varchar(50)set @table = 'webgame_sys_user'
    set @sql='select @a=count(user_id) from '  + @table
    exec sp_executesql @sql,N'@a int output',@count output 
    select @count 
      

  11.   

    這麼改就可以了。得出來的@LINECOUNT 一樣可以比較的。declare @LINECOUNT int, @sql Nvarchar(1000)
    declare @table_name varchar(50)
    set @table_name = 'webgame_sys_user'
    set @sql = ' SELECT @LINECOUNT = COUNT(user_id) FROM '+ @table_name
    exec sp_executesql @sql, N'@LINECOUNT int output', @LINECOUNT output
    IF @LINECOUNT <= @PAGE_SIZE
      

  12.   

    declare @count int
    declare @table varchar(50)
    set @table = 'webgame_sys_user'
    exec('SELECT Count(user_id) FROM '+ @table)
    select @count = @@ROWCOUNT
    print @count
    这样我就不用改了   
    结贴  谢谢各位了!!
      

  13.   

    declare @count int
    declare @table varchar(50)
    set @table = 'webgame_sys_user'
    exec('SELECT 1 FROM '+ @table)
    set @count = @@rowcountset @sql='select @a=count(user_id) from '  + @table
    exec sp_executesql @sql,N'@a int output',@count output 
    select @count
      

  14.   

    gogocsgogodn(知足常乐) ( ) 信誉:100    Blog   加为好友  2007-6-1 11:39:10  得分: 0  
     
     
       
    declare @count int
    declare @table varchar(50)
    set @table = 'webgame_sys_user'
    exec('SELECT Count(user_id) FROM '+ @table)
    select @count = @@ROWCOUNT
    print @count
    这样我就不用改了   
    结贴  谢谢各位了!!  
     
    ----------
    但是還是建議你用sp_executesql 來做。修改的代碼也不多,只需要將你那的exec改為sp_executesql 的用法即可。
      

  15.   

    declare @count int
    declare @table varchar(50)
    set @table = 'webgame_sys_user'
    exec('SELECT Count(user_id) FROM '+ @table)
    select @count = @@ROWCOUNT
    print @count 
    不对啊!这个@@ROWCOUNT永远是1啊
    修改成这个还成exec('SELECT Count(1) FROM '+ @table),用@@ROWCOUNT才对
      

  16.   

    我寫的是
    exec('SELECT user_id FROM '+ @table)樓主復制的有問題。