пятница, 22 декабря 2017 г.

Select for update skip locked example

#Session 1

SQL> delete del1;

0 rows deleted.

SQL>
SQL> insert into del1(n) (select level from dual connect by level < 100);

99 rows created.

SQL> var c1 refcursor;
SQL>
SQL> begin
  2    open :c1 for select n from del1 order by n for update skip locked;
  3  end;
  4  /

PL/SQL procedure successfully completed.

SQL>
SQL> set serveroutput on;
SQL>
SQL> declare
  2    n number;
  3  begin
  4    fetch :c1 into n;
  5    dbms_output.put_line(to_char(n));
  6  end;
  7  /
1

PL/SQL procedure successfully completed.

#Session 2

SQL> var c1 refcursor;
SQL>
SQL> begin
  2    open :c1 for select n from del1 order by n for update skip locked;
  3  end;
  4  /

PL/SQL procedure successfully completed.

SQL>
SQL> set serveroutput on;
SQL>
SQL> declare
  2    n number;
  3  begin
  4    fetch :c1 into n;
  5    dbms_output.put_line(to_char(n));
  6  end;
  7  /
2

PL/SQL procedure successfully completed.

#Session 1

SQL> declare
  2    n number;
  3  begin
  4    fetch :c1 into n;
  5    dbms_output.put_line(to_char(n));
  6  end;
  7  /
3

PL/SQL procedure successfully completed.

#Session 2

SQL> declare
  2    n number;
  3  begin
  4    fetch :c1 into n;
  5    dbms_output.put_line(to_char(n));
  6  end;
  7  /
4

PL/SQL procedure successfully completed.

Комментариев нет:

Отправить комментарий