create function changeSql (@sqlstr varchar(1000),@tname varchar(20))
   returns varchar(3000)
as
begin
   declare @pos int
   set @pos=charindex('from',@sqlstr)
   set @sqlstr=stuff(@sqlstr,@pos-1,0,space(1)+'into '+@tname)
   return @sqlstr
enddeclare @sql varchar(50),@tname varchar(20)
set @sql='select * from cc'
set @tname='cc_1'
set @sql=dbo.changeSql(@sql,@tname) 
exec (@sql)
select * from cc_1

解决方案 »

  1.   

    create function changeSql (@sqlstr varchar(1000),@tname varchar(20))
       returns varchar(3000)
    as
    begin
       declare @pos int
       set @pos=charindex('from',@sqlstr)
       set @sqlstr=stuff(@sqlstr,@pos-1,0,space(1)+'into '+@tname)
       return @sqlstr
    endgodeclare @sql varchar(50),@tname varchar(20)
    set @sql='select * from cc'
    set @tname='cc_1'
    set @sql=dbo.changeSql(@sql,@tname) 
    exec (@sql)
    select * from cc_1
      

  2.   

    create function changeSql (@sqlstr varchar(1000),@tname varchar(20))
    returns varchar(8000)
    as 
    begin
       declare @pos int
       set @pos=charindex('from',@sqlstr)
       set @sqlstr=stuff(@sqlstr,@pos-1,0,space(1)+'into'+@tname+' ')
       return(@sqlstr)
    end
      

  3.   

    函数不支持动态SQL语句处理,改存储过程
      

  4.   

    create function changeSql(@sqlstr varchar(1000),@tname varchar(20))
    returns varchar(8000)
    as
    begin
       declare @pos int
       set @pos=charindex('from',@sqlstr)
       set @sqlstr=stuff(@sqlstr,@pos-1,0,space(1)+'into '+@tname)
       return(@sqlstr)
    end
    go--调用
    declare @sql varchar(50),@tname varchar(20)
    set @sql='select * from cc'
    set @tname='cc_1'
    set @sql=dbo.changeSql(@sql,@tname)
    exec(@sql)