declare @str varchar(200)set @str='select (1+5)*7.5'
exec (@str)

解决方案 »

  1.   


    declare @strA varchar(1000)
    set @strA='(1+5)*7.5'
    exec('select '  + @strA)
      

  2.   

    declare @i int
    set @i =(1+5)*7.5
    select @i
      

  3.   

    参考:declare @tcnt int
    declare @paras varchar(100)
    DECLARE @SQLString NVARCHAR(500)
    set @paras ='1,3,5'
    set @sqlstring=N'select @cnt=count(*) from sysobjects where id in ('+@paras+')'set @tcnt=0
    execute sp_executesql 
              @sqlstring,
              N'@cnt int output',
      @cnt=@tcnt output
    select @tcnt
    select * from sysobjects
    参考:
    Create Procedure GetMaxID
    @TableName varchar(100), @ID int output
    as
    begin
    declare @sql nvarchar(1000)
    set @sql='select @ID = count(ID) from '+@TableName
    exec sp_executesql @sql,N'@id int output',@id output
    end
      

  4.   

    declare @A varchar(300)
    set @A='select (1+5)*7.5'
    exec (@A)
      

  5.   

    declare @A varchar(300),@b varchar(20)
    set @b='(1+5)*7.5'
    set @A='select '+@b
    exec (@A)
      

  6.   

    declare @公式 varchar(100)
    set @公式='(a+b)*c'
     create table test (name varchar(10),value decimal(10,2))
     insert test values('a',1)
     insert test values('b',5)
     insert test values('c',7.5)
     select @公式=replace(@公式,name,value) from test
     exec('select '+@公式+'  结果')
     go 
    drop table test
      

  7.   

    我的意思是
    declare @v decimal(18,4)
    declare @strsql varchar(1000)set @strsql = '(1.9+3)*5.6'将@strsql的表达式的值传给@v,而@strsql的表达式是不断变化的