1,查看当前过程和函数的对象名,创建时间和状态。
select object_name,created,status from user_objects where object_type in ('PROCEDURE','FUNCTION');
2,列出子程序源代码。
select text from user_source where name = 'RAISE_SALARY';
3,列出子程序编译错误。
1)使用SHOW ERRORS命令查错:
show errors procedure raise_salary
2)使用数据字典视图USER_ERRORS确定错误原因和位置:
select line ||'/'||position as "LINE/COL",text error from user_errors where name = 'RAISE_SALARY';
4,列出对象依赖关系。
1)使用user_dependencies确定直接依赖关系。
select name,type from user_dependencies where referenced_name = 'EMP';
2)使用工具视图DEPTREE和IDEPTREE确定直接依赖和间接依赖关系。
运行系统SQL脚本。
SQL>@%oracle_home%\rdbms\admin\utldtree
SQL>exec deptree_fill('TABLE','SCOTT','EMP')
SQL>select nested_level,name,type from deptree;
5,从新编译子程序。
当修改了被引用对象的结构时,就会将相关依赖对象转变为无效。
SQL> alter table emp add remark varchar2(100);
SQL> select object_name,object_type from user_objects where status = 'INVALID';
为了避免子程序的运行错误,因该重新编译这些存储对象。
SQL> ALTER PROCEDURE add_employee COMPILE;
SQL> ALTER VIEW dept10 COMPILE;
SQL> ALTER FUNCTION get_info COMPILE;