declare @i int
set @i = 4*5
exec ('select top '+cast(@i as varchar)+' from [table]')

解决方案 »

  1.   

    exec ('select top '+cast(4*5 as varchar)+' from [table]')
      

  2.   

    你好像忘了写个*
    不过不管我写成declare @i int
    set @i = 4*5
    exec ('select top '+cast(@i as varchar)+' * from table1')或是exec ('select top '+cast(4*5 as varchar)+' * from table1')总是报告:
    服务器: 消息 170,级别 15,状态 1,行 1
    第 1 行: 'cast' 附近有语法错误。这是怎么回事?
      

  3.   

    declare @i int
    declare @sql varchar(300)
    set @i = 4*5
    set @sql='select top '+cast(@i as varchar)+' * from aaa'
    exec (@sql)
      

  4.   

    这样也可declare @sql varchar(300)
    set @sql='select top '+cast(4*5 as varchar)+' * from aaa'
    exec (@sql)
      

  5.   

    大江东去的方法执行成功了,谢谢大家,可是我不明白,这个和tj_dns的写法有什么区别,为什么一个正常另一个却出错?
      

  6.   

    declare @sql varchar(300)
    set @sql='select top '+cast(4*5 as varchar(10))+' * from aaa'
    exec (@sql)