新的数据库从原数据库备份恢复而来,但是存储过程中有很多是调用原数据库的,需要一一修改。
我可以用这样的语句获得所有需要修改的存储过程名。
select [name] from sysobjects where name
like 'usp_Portal%' or name like 'usp_UM%'
在这些存储过程中,凡是调用UM库的,都需要把库名改成UM2.
有什么方法可以批量的修改替换。
比如原存储过程中查询语句中表名这样的 UM.UM.T_Tableame
需要改成 UM2.UM.T_Tableame
------解决方案--------------------
不可以批量修改,还是自己动手吧.
------解决方案--------------------
--2008
DECLARE
@proc_content VARCHAR(MAX) ,
@old VARCHAR(20)= 'UM.',
@new VARCHAR(20)='UM2.',
DECLARE c CURSOR FOR
SELECT [definition]
FROM sys.sql_modules m,sys.[objects] AS o
WHERE m.[object_id] =o.[object_id] AND o.[type]='P'
AND CHARINDEX(@old,m.[definition])>0
OPEN c
FETCH c INTO @proc_content
WHILE @@fetch_status = 0
BEGIN
SET @proc_content=REPLACE(REPLACE(@proc_content , @old , @new),'CREATE PROC','ALTER PROC ')
EXEC(@proc_content)
FETCH c INTO @proc_content
END
CLOSE c
DEALLOCATE c
------解决方案--------------------
