如何从Oracle中的无效包中检索缺失的列或缺失的表?

时间:2014-08-14 05:39:59

标签: sql oracle

我的表中有无效的对象,如包或程序,我是否可以使用sqlplus脚本或sql脚本检索包所需的缺失表或字段?

1 个答案:

答案 0 :(得分:1)

首先,尝试编译到架构以获取最小的错误集:

CONN myuser/mypass@mydb
EXEC UTL_RECOMP.recomp_serial(USER);

接下来,您可以获得所有未完成错误的列表:

SELECT * FROM user_errors;

现在,这将显示对象(包,过程,错误)以及带错误的行号。您可以将此连接到user_source,例如,以显示代码行,例如(未测试 - 此处仅显示提示):

select e.error_text, s.type, 
       s.name, s.line, e.line
from user_errors e, user_source s
where s.name = e.name
and  s.type = e.type
and  s.line between (e.line-2) and (e.line+2) -- context 
order by s.type, s.name, e.line, s.line;