新的数据库从原数据库备份恢复而来,但是存储过程中有很多是调用原数据库的,需要一一修改。
我可以用这样的语句获得所有需要修改的存储过程名。
select [name] from sysobjects where name
like 'usp_Portal%' or name like 'usp_UM%'
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