rt请教 如何在线通过存储过程 去修改已有的存储过程
如存储过程 masp1 现需要要将 里面 declare vc_xxx char(100)
全部替换为 declare vc_yyy char(1000)涉及太多存储过程,手动修改不太现实,且必须在线操作求解

解决方案 »

  1.   

    没弄过,我觉得思路应该是
    把新的存储过程用sql串的形式就行执行,例如create proc Myexec(@sql varchar(max))
    as
    begin
    exec(@sql)
    endexec Myexec 'select 3'上面这样是可以执行的。参数换成'alter proc ...'
      

  2.   


    use db
    goalter procedure up_t1
    as
    begin
    declare @a_xx nvarchar(100)
    set @a_xx='aa'
    select @a_xx
    endgo
    select [name],sp from sys.objects where [type]='p'declare @a table(col nvarchar(max))
    declare @xml xml
    declare @sql nvarchar(max)
    insert into @a exec sp_helptext 'up_t1'
    -- select * from @a
    update @a set [col]=replace([col],'@a_xx','@a_yy')set @xml=(select [col]+' ' from @a for xml path(''))
    set @sql=cast(@xml as nvarchar(max))
    set @sql=replace(replace(@sql,'create','alter'),'
',' ') -- 这里是多了个&#X0D,可能是回车吧exec(@sql)exec sp_helptext 'up_t1'