Как сгенерировать исключение в хранимой процедуре Oracle для блокировки в таблице

db.zipcodes.find({city : "NEW YORK"}); // Case-sensitive
db.zipcodes.find({city : /NEW york/i}); // Note the 'i' flag for case-insensitivity
0
задан Barbaros Özhan 18 January 2019 в 18:16
поделиться

2 ответа

Как поднять собственное исключение? Примерно так:

SQL> set serveroutput on
SQL> create or replace procedure p_test is
  2    my_ex exception;
  3  begin
  4    raise my_ex;
  5  exception
  6    when my_ex then
  7      dbms_output.put_line('My exception');
  8  end;
  9  /

Procedure created.

SQL> exec p_test
My exception

PL/SQL procedure successfully completed.

SQL>

Вместо того, чтобы отобразить его на экране, вы бы сохранили его в какой-то таблице.

0
ответ дан Littlefoot 18 January 2019 в 18:16
поделиться

Можно добавить оператор SQL Select, подобный приведенному ниже, при условии, что соответствующие синонимы привилегий выбора динамических представлений производительности предоставлены текущему пользователю:

Select count(1)
  Into v_locked
  From all_objects o
  Join v$locked_object l on o.object_id = l.object_id
  Join v$session s on l.session_id = s.sid
  Join v$session_wait w on s.sid = w.sid
 Where o.object_name = 'TBL_IPCOLO_MAST_INFO'
   and s.status = 'ACTIVE'
   and lower(w.event) like '%enq%contention%' --> "enq: TX - row lock contention"

[116 ] перед вызовом курсора.

Если значение переменной v_locked больше zero, то соответствующая таблица имеет значение row lock contention. Это будет предупреждено и занесено в простую таблицу, если v_locked > 0.

0
ответ дан Barbaros Özhan 18 January 2019 в 18:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: