Control de concurrencia

Josaka
12 de Julio del 2009
Hola a todos,

Tengo la siguiente duda sobre el control de concurrencia que permite o realiza Oracle.

Necesito realizar un control en una transacci贸n de un procedimente almacenado.

De tal forma, cuando se ejecuta el procedimento, ha de "bloquear" la transacci贸n para que si otro usuario llama al mismo procedimiento la transacci贸n se espere a que acabe la primera (commit o rollback)

Ser铆a as铆???


Procedimiento X{

--Inicio transacci贸n
set transaction isolation level serializable;
--Realizo los selects, update, inserts, necesarios
--Si no error:
Commit;
--Else
Rollback;
--Se acaba la transacci贸n, vuelvo a dejar el estado que ten铆a anteriormente.
set transaction isolation level read commited;
}

Es esto correcto? Hay alguna otra forma de hacerlo que sea m谩s 贸ptima?

Gracias a todos!!!

DJLopezV
12 de Julio del 2009
Saludos: Segun comprendo, lo que realmente necesitas es utilizar una directiva en PL/SQL que se llama PRAGMA AUTONOMOUS_TRANSACTION que permite crear un procedimiento de base de datos o un paquete de base de datos con un comportamiento independiente de control de transaccion (commit o Rollback) del programa donde es llamado.

Busca ejemplos de esta dorectiva.

Espero te sea de utilidad la respuesta.

Exitos.