همانطور که می دانید ویوی dba_errors خطای مربوط به invalid objectها را نمایش می دهد بنابرین اگر بخواهیم دلیل invalid بودن یک پروسیجر، پکیج، فانکشن و … را ببینیم، می توانیم از این ویو استفاده کنیم.
نکته ای که در این مستند به آن خواهیم پرداخت آن است که این ویو تا قبل از compile شدن یک invalid object، خطای مربوط به آن object را نمایش نمی دهد این مسئله را در ادامه متن با ارائه مثال شرح داده ایم.
پروسیجر زیر را در نظر بگیرید:
SQL> create table usef.tb (id number,name varchar2(100)); SQL> create procedure usef.prc1(p_id in number) as kk varchar2(100); begin select name into kk from usef.tb where id = p_id; end; /
SQL> select status from dba_objects where object_name='PRC1'; STATUS ------- VALID
با حذف ستون name از جدول tb، این پروسیجر INVALID خواهد شد:
SQL> alter table usef.tb drop column name; Table altered SQL> select status from dba_objects where object_name='PRC1'; STATUS ------- INVALID
اما ویوی dba_errors چیزی را برنمی گرداند:
SQL> select owner,name,text from dba_errors; no rows selected
با اولین کامپایل این پروسیجر، dba_errors خطای مربوط به پروسیجر را نمایش می دهد:
SQL> alter procedure usef.prc1 compile; Warning: Procedure altered with compilation errors. SQL> select owner,name,text from dba_errors; OWNER NAME TEXT ---------- ---------- -------------------------------------------------- USEF PRC1 PL/SQL: ORA-00904: "NAME": invalid identifier USEF PRC1 PL/SQL: SQL Statement ignored