重编译失效存储函数
语法格式
sql
RecompileStmt::=
ALTER FUNCTION name_space RECOMPILE
示例
- 创建表并插入数据,再创建存储函数并使用。sql
SQL> CREATE TABLE test_proc_tab (id NUMBER); SQL> INSERT INTO test_proc_tab (id) VALUES (1)(2)(3); SQL> CREATE OR REPLACE FUNCTION func_test() RETURN INT AS ret INT; BEGIN SELECT MAX(id) INTO ret FROM test_proc_tab; RETURN ret; END; / SQL> SELECT func_test() FROM dual; EXPR1 | ------------------------------------------------------------------------------ 3 |
- 强制删除表,存储函数失去依赖表失效。sql
SQL> DROP TABLE test_proc_tab CASCADE; SQL> SELECT func_test() FROM dual; Error: [E8014 L1 C8] 存储过程或函数FUNC_TEST被标识为失效
- 重新创建表并插入数据,重编译存储函数,可正常使用。sql
SQL> CREATE TABLE test_proc_tab (id NUMBER); SQL> INSERT INTO test_proc_tab (id) VALUES (1)(2)(3); SQL> ALTER FUNCTION func_test RECOMPILE; SQL> SELECT func_test() FROM dual; EXPR1 | ------------------------------------------------------------------------------ 3 |