欢迎投稿

今日深度:

如何快速重新编译所有的存储过程,编译存储过

如何快速重新编译所有的存储过程,编译存储过程


自己的一个写法,大概思路是从sys.Objects里取得所有的存储过程,然后拼动态字符串来使用sp_recompile重新编译所有的SP。

SELECT ROW_NUMBER() OVER(ORDER BY name) AS RID,'exec sp_recompile ''' + name +'''' AS Text
INTO #TEMP
FROM sys.objects WHERE TYPE = 'P'

DECLARE @MaxID INT
DECLARE @SQL VARCHAR(MAX)
SELECT @MaxID = MAX(RID) FROM #TEMP

WHILE (@MaxID IS NOT NULL)
BEGIN
	SELECT @SQL = Text
	FROM #TEMP
	WHERE RID = @MaxID
	
	--PRINT @SQL
	EXEC (@SQL)
	
	SELECT @MaxID = MAX(RID) FROM #TEMP WHERE RID < @MaxID 
END

不知道还有没有什么更好的方法。


怎重新编译存储过程?用一条什麽命令?

使用execute,例如:
execute obooke;
 

oracle中怎批量编译视图与存储过程

1.批量编译存储工程的存储过程
create or replace procedure compile_invalid_procedures(
p_owner varchar2 -- 所有者名称,即 SCHEMA) as--编译某个用户下的无效存储过程
str_sql varchar2(200);begin
for invalid_procedures in (select object_name from all_objects
where status = 'INVALID' and object_type = 'PROCEDURE' and owner=upper(p_owner))loop
str_sql := 'alter procedure ' ||invalid_procedures.object_name || ' compile';begin
execute immediate str_sql;exception
--When Others Then Null;
when OTHERS Then
dbms_output.put_line(sqlerrm);end;end loop;end;
2.批量编译视图的存储过程
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/4309.html NewsArticle 如何快速重新编译所有的存储过程,编译存储过程 自己的一个写法,大概思路是从sys.Objects里取得所有的存储过程,然后拼动态字符串来使用sp_recompile重新编译所有的SP。 SELECT ROW_NUMB...
评论暂时关闭