بروزر شدن dba_errors بعد از کامپایل invalid objectها

همانطور که می دانید ویوی dba_errors خطای مربوط به invalid objectها را نمایش می دهد بنابرین اگر بخواهیم دلیل invalid بودن یک پروسیجر، پکیج، فانکشن و … را ببینیم، می توانیم از این ویو استفاده کنیم.

نکته ای که در این مستند به آن خواهیم پرداخت آن است که این ویو تا قبل از compile شدن یک invalid object، خطای مربوط  به آن object را نمایش نمی دهد این مسئله را در ادامه متن با ارائه مثال شرح داده ایم.

پروسیجر زیر را در نظر بگیرید:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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> 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> 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;
/
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
SQL> select status from dba_objects where object_name='PRC1';
STATUS
-------
VALID
SQL> select status from dba_objects where object_name='PRC1'; STATUS ------- VALID
SQL> select status from dba_objects where object_name='PRC1';
STATUS
-------
VALID

با حذف ستون name از جدول tb، این پروسیجر INVALID خواهد شد:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
SQL> alter table usef.tb drop column name;
Table altered
SQL> select status from dba_objects where object_name='PRC1';
STATUS
-------
INVALID
SQL> alter table usef.tb drop column name; Table altered SQL> select status from dba_objects where object_name='PRC1'; STATUS ------- 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 چیزی را برنمی گرداند:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
SQL> select owner,name,text from dba_errors;
no rows selected
SQL> select owner,name,text from dba_errors; no rows selected
SQL> select owner,name,text from dba_errors;
no rows selected

با اولین کامپایل این پروسیجر، dba_errors خطای مربوط به پروسیجر را نمایش می دهد:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
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
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

 

ارائه خدمات مشاوره ، پشتیبانی و نصب و راه اندازی پایگاه داده اوراکل در سراسر کشور...................... تلفن: 09128110897 ایمیل:vahidusefzadeh@gmail.com

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *