Если есть способ, я его не знаю.
SHOW ERRORS
- это команда SQL * Plus. Насколько я могу судить, он извлекает данные из USER_ERRORS
(или, возможно, ALL_ERRORS
или DBA_ERRORS
). Его описание:
SQL> desc user_errors;
Name Null? Type
----------------------------------------- -------- ----------------
NAME NOT NULL VARCHAR2(30)
TYPE VARCHAR2(12)
SEQUENCE NOT NULL NUMBER
LINE NOT NULL NUMBER
POSITION NOT NULL NUMBER
TEXT NOT NULL VARCHAR2(4000)
ATTRIBUTE VARCHAR2(9)
MESSAGE_NUMBER NUMBER
Если я сделаю что-то вроде этого:
SQL> create or replace procedure ptest is
2 l_Res number;
3 begin
4 l_res := 1 * A;
5 end;
6 /
Warning: Procedure created with compilation errors.
SQL> show err
Errors for PROCEDURE PTEST:
LINE/COL ERROR
-------- --------------------------------------------------------
4/3 PL/SQL: Statement ignored
4/16 PLS-00201: identifier 'A' must be declared
, тогда SHOW ERR
вернет последние ошибки, которые я получил. Значит ли это, что USER_ERRORS не содержит что-то еще? Нет:
SQL> select name, line, substr(text, 1, 50) text from user_Errors;
NAME LINE TEXT
------------ ---------- --------------------------------------------------
PTEST 4 PL/SQL: Statement ignored
PTEST 4 PLS-00201: identifier 'A' must be declared
ADD_COURSE 0 PL/SQL: Compilation unit analysis terminated
ADD_COURSE 2 PLS-00201: identifier 'COURSE.TILTE' must be decla
SQL>
Итак, я могу просто удалить его содержимое? В идеале, я бы делал это между каждыми двумя CREATE PROCEDURE
(или какими-то еще) операторами в этом скрипте .SQL:
SQL> delete user_errors;
delete user_errors
*
ERROR at line 1:
ORA-01031: insufficient privileges
Нет, я не могу этого сделать.
Поэтому, я думаю , вам придется использовать эту не очень удобную опцию и указать, чьи ошибки вы хотите видеть.