存储过程失效

数据库 waitig 719℃ 百度已收录 0评论

1.失效的原因
     存储过程中引用的对象发生变化。
2.方法
     1)重新编译存储过程
     2)任务批量更新
3.实验
  3.1 创建存储过程pro_emp_bak

CREATE OR REPLACE PROCEDURE pro_emp_bak
IS
 v_name VARCHAR2(300);
BEGIN
  SELECT emp_bak.ename INTO v_name FROM emp_bak WHERE emp_bak.empno=7369;
  dbms_output.put_line('v_name:'||v_name);
END;

3.2 改变emp_bak.ename长试

 alter table emp_bak modify job varchar2(300);



  3.3重新登录PL/SQL,存储过程失效



       


     或者查找表 

SELECT b.OBJECT_TYPE,b.OBJECT_NAME,b.status
FROM User_Objects b
WHERE b.OBJECT_TYPE='PROCEDURE'

      
       


  3.4编译一下存储过程

SQL> alter procedure pro_emp_bak compile;

 也可以写一个批量编译存储过程的语句例如:    

SELECT  'alter procedure '||b.OBJECT_NAME||' complie ;'
FROM User_Objects b
WHERE b.OBJECT_TYPE='PROCEDURE' and b.status='INVALID'





本文由【waitig】发表在等英博客
本文固定链接:存储过程失效
欢迎关注本站官方公众号,每日都有干货分享!
等英博客官方公众号
点赞 (0)分享 (0)