Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 dbms_lock - ну как так-то а?  [new]
Valergrad
Member

Откуда:
Сообщений: 703
Создаю на сервере процедуру которая лочит некоторый хэндл:
create or replace procedure my_lock_request
as
    x varchar2(1000);
    y number;
    v_name varchar2(100) := 'mmm3';
begin
    dbms_lock.allocate_unique ( v_name, x, 7200);
    y := dbms_lock.request(lockhandle => x, timeout => 0);
    dbms_output.put_line(  y );
end;

Теперь вызываю ее удаленно, все ок:
begin
 dev.my_lock_request@serv;
end;

Но мне нужен код ошибки, чтобы узнать - получилось ли залочить. Пробую:
create or replace function my_lock_request return number
as
    x varchar2(1000);
    y number;
    v_name varchar2(100) := 'mmm2';
begin
    dbms_lock.allocate_unique ( v_name, x, 7200);
    y := dbms_lock.request(lockhandle => x, timeout => 0);
    return y;    
end;

Теперь при вызове на удаленном сервере получаю:
declare 
   y number;
begin
 y := dev.my_lock_request@serv;
end;

[Error] Execution (50: 1): ORA-02064: distributed operation not supported
ORA-06512: at "SYS.DBMS_LOCK", line 250
ORA-06512: at "DEV.MY_LOCK_REQUEST", line 7
ORA-06512: at line 4

Как так-то а? Не может же lock смотреть - процедура вызывается или функция. Как он может выдавать или не выдавать ошибку в зависимости от контекста?
22 июн 11, 17:01    [10856525]     Ответить | Цитировать Сообщить модератору
 Re: dbms_lock - ну как так-то а?  [new]
Elic
Member

Откуда:
Сообщений: 29976
Valergrad
смотреть - процедура вызывается или функция.
RTFM ORA-02064: "Cause: A commit is issued in a coordinated session from an RPC with OUT parameters."
22 июн 11, 17:45    [10856947]     Ответить | Цитировать Сообщить модератору
 Re: dbms_lock - ну как так-то а?  [new]
Valergrad
Member

Откуда:
Сообщений: 703
Т.е. dbms_lock делает коммит?
22 июн 11, 18:09    [10857146]     Ответить | Цитировать Сообщить модератору
 Re: dbms_lock - ну как так-то а?  [new]
Elic
Member

Откуда:
Сообщений: 29976
RTFM DBMS_LOCK.ALLOCATE_UNIQUE (FAQ)
22 июн 11, 18:15    [10857209]     Ответить | Цитировать Сообщить модератору
 Re: dbms_lock - ну как так-то а?  [new]
Valergrad
Member

Откуда:
Сообщений: 703
Elic, спасибо!
22 июн 11, 18:30    [10857292]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить