如何快速重新編譯所有的預存程序,編譯預存程序

來源:互聯網
上載者:User

如何快速重新編譯所有的預存程序,編譯預存程序

自己的一個寫法,大概思路是從sys.Objects裡取得所有的預存程序,然後拼動態字串來使用sp_recompile重新編譯所有的SP。

SELECT ROW_NUMBER() OVER(ORDER BY name) AS RID,'exec sp_recompile ''' + name +'''' AS TextINTO #TEMPFROM sys.objects WHERE TYPE = 'P'DECLARE @MaxID INTDECLARE @SQL VARCHAR(MAX)SELECT @MaxID = MAX(RID) FROM #TEMPWHILE (@MaxID IS NOT NULL)BEGINSELECT @SQL = TextFROM #TEMPWHERE RID = @MaxID--PRINT @SQLEXEC (@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.批量編譯視圖的預存程序
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.