重编译失效存储过程
语法格式
sql
RecompileStmt::=
ALTER PROCEDURE name_space RECOMPILE
示例
- 创建存储过程
pro1
和pro2
,pro2
依赖于pro1
。sql-- 创建存储过程pro1 SQL> CREATE OR REPLACE PROCEDURE pro1 IS BEGIN DBMS_OUTPUT.PUT_LINE('abc'); END; / -- 创建存储过程pro2 SQL> CREATE PROCEDURE pro2 IS BEGIN EXEC pro1; END; /
- 强制删除
pro1
,导致pro2
失效。sql-- 强制删除存储过程pro1 SQL> DROP PROCEDURE pro1 CASCADE; -- 存储过程pro2已失效 SQL> SELECT valid FROM user_procedures WHERE proc_name='PRO2'; VALID | ------------------------------------------------------------------------------ F |
- 重新创建
pro1
,并对pro2
进行重编译,功能恢复。sql-- 重新创建存储过程pro1 SQL> CREATE OR REPLACE PROCEDURE pro1 IS BEGIN DBMS_OUTPUT.PUT_LINE('abc'); END; / -- 此时pro2依然失效 SQL> SELECT valid FROM user_procedures WHERE proc_name='PRO2'; VALID | ------------------------------------------------------------------------------ F | -- 重编译pro2 SQL> ALTER PROCEDURE pro2 RECOMPILE; -- 存储过程pro2已恢复 SQL> SELECT valid FROM user_procedures WHERE proc_name='PRO2'; VALID | ------------------------------------------------------------------------------ T |