exec('select top '+@x*@y+' id from table')

解决方案 »

  1.   

    declare @x int
    declare @y
    set @x=2
    set @y=2
    exec('select top '+@x*@y +' id from table')
      

  2.   

    检测还是通不过啊!!!!!!declare @x int
    declare @y int
    set @x=2
    set @y=2
    exec('select top '+@x*@y +' id from table')服务器: 消息 170,级别 15,状态 1,行 5
    第 5 行: '*' 附近有语法错误。
      

  3.   

    改一下:
    declare @x int
    declare @y int
    set @x=2
    set @y=2
    exec('select top '+cast(@x*@y  as char)+' id from table')
      

  4.   

    不是不行哦!!!!!!!declare @x int
    declare @y int
    set @x=2
    set @y=2
    exec('select top '+cast(@x*@y  as char)+' id from table')服务器: 消息 170,级别 15,状态 1,行 5
    第 5 行: 'cast' 附近有语法错误。
      

  5.   

    declare @x int
    declare @y int
    declare @z varchar(10)
    set @x=2
    set @y=2
    set @z=cast(@x*@y as varchar(10))
    exec('select top '+@z+' id from table')--测试通过
      

  6.   

    为什么这里一定要将其转成字符串? set @z=cast(@x*@y as varchar(10))
    为什么不直接用set @z=(@x*@y)????
      

  7.   

    declare @x int,
    @y int,
    @xy varchar(10),
    @sql varchar(100)
    set @x=1
    set @y=2
    set @xy=convert(varchar(10),@x*@y)
    set @sql='select top '+@xy+' * from krs'
    exec(@sql)
      

  8.   

    int 型是不能跟varchar 型相加的.'top' +  @x*@y这是不能加的
      

  9.   

    exec中执行的中能是字符串的类型