declare @sql nvarchar(2000),
        @tt nvarchar(200),
        @test int
set @tt='case where col1>100 then 150 else 300 end'
set @sql=' select '+@tt+' from tab1 where col2=500 'exec sp_executesql @sql,N'@test int output',@test output

解决方案 »

  1.   

    declare @sql nvarchar(2000),
            @tt nvarchar(200),
            @test int
    set @tt='case where col1>100 then 150 else 300 end'
    set @sql='create proc #ttt @o int output as select @o=(select '+@tt+' from tab1 where col2=500) '
    execute(@sql)
    exec #ttt @test output
      

  2.   


    declare @sql nvarchar(2000),
            @tt nvarchar(200),
            @test int
    set @tt='case when  col1>100 then 150 else 300 end'
    set @sql=' select  @test1 =  '+@tt+' from tab1 where col2=500 'exec sp_executesql  @sql  , ' @test1  int output ' , @test output print @test