1、列出当前用户的子程序
数据字典视图USER_OBJECTS用于显示当前用户所包含的所有对象。它不仅可以列出用户的表、视图、索引等,也可以列出用户的过程、函数和包。如下语句所示:
SELECT * FROM USER_OBJECTS WHERE OBJECT_TYPE IN ('PROCEDURE','FUNCTION');
2、列出子程序源代码
数据字典视图USER_SOURCE用于列出子程序的源代码。
SELECT TEXT FROM USER_SOURCE WHERE NAME='PKG_N9_RPT';
3、列出子程序编译错误
确定错误出现在哪一行方法:
第一:使用SHOW ERRORS命令;SQL> SHOW ERRORS PROCEDURE ADD_AREA;
第二:使用数据字典视图USER_ERRORS。SQL> SELECT line||'/'||position AS "LINE/COL",text error FROM user_errors WHERE name='ADD_AREA';
4、列出对象依赖关系
比如视图GC_OWNERSHIP引用了表B$GC_OWNERSHIP,那么该视图就是依赖对象,而该表称为引用对象
查看依赖关系的方法一:
SELECT * FROM USER_DEPENDENCIES WHERE REFERENCED_NAME='B$GC_OWNERSHIP';
查看依赖关系的方法二:
使用工具视图DEPTREE和IDEPTREE确定直接依赖和间接依赖关系
首先运行E:\oracle\product\10.2.0\db_1\RDBMS\ADMIN下的utldtree.sql脚本,来建立这两个视图和过程deptree_fill,然后调用过程deptree_fill填充这两个视图。
SQL> @E:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\utldtree.sql --利用utldree.sql建立视图和过程
SQL>exec deptree_fill(‘table’,’scott’,’emp’); --利用过程填充视图内容
SQL>select * from deptree; --从视图中获取数据、
5、重新编译子程序
当其所引用的对象发生变化时会使这些依赖对象变为无效的,因此必须重新编译才能重新变成可使用的。
可以直接在plsql的左边选择包等右键进行编译;
或者采用语句进行编译:ALTER PROCEDURE ADD_AREA COMPILE;