формы оракула - свойство процедуры блокировки - PullRequest
0 голосов
/ 16 августа 2011

У меня есть форма оракула, где свойство процедуры блокировки блока данных установлено для вызова процедуры 'lock_fn'. Процедура lock_fn выглядит следующим образом:

procedure lock_fn(outp IN OUT out_tab) IS
l_first BINARY_INTEGER := outp.first;
l_last BINARY_INTEGER := outp.last;
l_id a.id%type;
BEGIN
    for i in  l_first .. l_last loop
        select id
        into   l_id
        from a
        where a.id=outp(i).id;
    end loop;
END lock_fnl;

Мой вопрос такой: будет ли простой выбор идентификаторов гарантировать блокировку на уровне строк? Любая помощь будет приветствоваться.

Edit: Триггер LOCK-PROCEDURE блока данных имеет автоматически сгенерированный код, который выглядит следующим образом:

DECLARE
bk_data FRMPKG.OUT_TAB;
BEGIN
PLSQL_TABLE.POPULATE_TABLE(bk_data, 'LOCK_FN', PLSQL_TABLE.LOCK_RECORDS);
FRMPKG.LOCK_FN(bk_data);
END;

1 Ответ

3 голосов
/ 16 августа 2011

Будет ли простой выбор идентификаторов гарантировать блокировку уровня строки?

Нет.Вам потребуется SELECT FOR UPDATE (но тогда достаточно будет выбрать только один столбец).

...