declare @A INT
declare @B INTSET @A=7
SET @B=9declare @Sql varchar(400)
set @Sql='@A+@B'select @A+@B        --16  
如何将@Sql进行转化后最终 效果
select @Sql  也能得到   16值期待佳音!!!

解决方案 »

  1.   

    declare @Sql int
     set @Sql=@A+@B
    select @sql 
      

  2.   

    declare @Sql varchar(400)
    set @Sql='@A+@B'是这个
      

  3.   

    declare @Sql varchar(400)
    set @Sql='@A+@B'    
    是字符串
      

  4.   

    我要的结果是 通过 
    declare @Sql varchar(400)
    set @Sql='@A+@B'获得结果
      

  5.   

    '@A+@B'
     这本身是字符串
    除非你把定义都放@sql里
      

  6.   

    try this,declare @A INT
    declare @B INTSET @A=7
    SET @B=9declare @Sql nvarchar(400)
    set @Sql=N'select @A+@B'exec sp_executesql @Sql,N'@A int,@B int',@A=@A,@B=@B--结果
    /*-----------
    16(1 row(s) affected)
    */
      

  7.   

     declare @Sql varchar(400)
     set @Sql='' + @A+@B
      

  8.   

    declare @A INT
    declare @B INTSET @A=7
    SET @B=9declare @Sql nvarchar(400)
    set @Sql='SELECT @A+@B'execute sp_executesql @Sql,N'@A int,@B int',@A,@B
      

  9.   

    换个方法吧:CREATE PROC proc_t
      @A INT,
      @B INT
    AS
      select @A + @B
    GOexec proc_t 7,9
      

  10.   

    感觉有一点但是 前面条件不能变 
    declare @A INT
    declare @B INTSET @A=7
    SET @B=9declare @Sql varchar(400)
    set @Sql='@A+@B'结果:select 转化(@Sql)  =16
      

  11.   


    直接去掉单引号就可以了,你把变量搞成字符了。。
    declare @A INT
    declare @B INTSET @A=7
    SET @B=9declare @Sql varchar(400)
    set @Sql=@A+@B
    select @Sql
    select @A+@B
      

  12.   


    declare @A INT
    declare @B INTSET @A=7
    SET @B=9declare @Sql varchar(400)
    set @Sql='@A+@B'
    select @A+@B  declare @sql2 int
    set @sql2=@A+@B
    select @sql2
      

  13.   

    6楼的方法已经很好了。
    declare @A INT
    declare @B INTSET @A=7
    SET @B=9declare @Sql varchar(400)
    set @Sql='@A+@B'select @A+@B        --16  declare @s nvarchar(max)
    set @s = N'Select ' + @Sql
    exec sp_executesql @s,N'@a int,@b int',@a=@a,@b=@b