我的表中有无效的对象,如包或程序,我是否可以使用sqlplus脚本或sql脚本检索包所需的缺失表或字段?
答案 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;