Sql 如何从Oracle中的无效包中检索缺少的列或缺少的表?
我的表中有无效的对象,如包或过程,我能否使用sqlplus脚本或sql脚本检索包所需的缺少的表或字段?首先,尝试编译为架构以获得最小的错误集:Sql 如何从Oracle中的无效包中检索缺少的列或缺少的表?,sql,oracle,Sql,Oracle,我的表中有无效的对象,如包或过程,我能否使用sqlplus脚本或sql脚本检索包所需的缺少的表或字段?首先,尝试编译为架构以获得最小的错误集: CONN myuser/mypass@mydb EXEC UTL_RECOMP.recomp_serial(USER); 接下来,您可以获得所有未解决错误的列表: SELECT * FROM user_errors; 现在,这将向您显示对象(包、过程、错误)以及带有错误的行号。例如,您可以将其连接到user_source以获得显示代码行的功能,例如(
CONN myuser/mypass@mydb
EXEC UTL_RECOMP.recomp_serial(USER);
接下来,您可以获得所有未解决错误的列表:
SELECT * FROM user_errors;
现在,这将向您显示对象(包、过程、错误)以及带有错误的行号。例如,您可以将其连接到user_source以获得显示代码行的功能,例如(未测试-此处显示只是为了提示):
无效对象上的错误为ORA-00942:表或视图不存在,ORA-00904:字符串:标识符无效。您可能希望编辑文章以包含更新,而不是通过注释发布更新
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;