rt请教 如何在线通过存储过程 去修改已有的存储过程
如存储过程 masp1 现需要要将 里面 declare vc_xxx char(100)
全部替换为 declare vc_yyy char(1000)涉及太多存储过程,手动修改不太现实,且必须在线操作求解
如存储过程 masp1 现需要要将 里面 declare vc_xxx char(100)
全部替换为 declare vc_yyy char(1000)涉及太多存储过程,手动修改不太现实,且必须在线操作求解
把新的存储过程用sql串的形式就行执行,例如create proc Myexec(@sql varchar(max))
as
begin
exec(@sql)
endexec Myexec 'select 3'上面这样是可以执行的。参数换成'alter proc ...'
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'),'
',' ') -- 这里是多了个
,可能是回车吧exec(@sql)exec sp_helptext 'up_t1'