Stored Procedure

cucu
03 de Julio del 2005
Estoy haciendo un pequeño sistemita para que funcione en red, y la duda que tengo es la siguiente:
Estoy trabajando con Oracle 8i y java.
Tengo un Stored Procedure que lo que hace es ver cual es el ultimo valor que tiene un campo de una tabla, incrementa el valor y luego inserta un nuevo registro con ese nuevo valor.
Esto lo hago para que me genere numeros consecutivos, mi pregunta es:

Supongamos que hay varias personas accediendo a la DB, se puede dar el caso de que 2 o mas personas ejecuten el stored procedure al mismo tiempo, en ese caso, oracle le va a dar prioridad a uno con lo cual me aseguro de que todos los numeros van a ser consecutivos o puede pasar otra cosa.
Espero que se haya entendido y muchas gracoas.

jc3000
03 de Julio del 2005
Hola.
Puede pasar que dos usuarios accedan simultaneamente al procedure y cojan los dos el mismo ultimo valor de la tabla, con lo cual insertaran el mismo valor.

Utiliza una secuencia.

cucu
03 de Julio del 2005
Lo que pasa que no puedo usar una sequencia porque tienen que ser valores consecutivos, y por ejemplo cuando reinicio la maquina la secuencia salta en 20.

Que otra cosa puedo hacer, hay alguna forma de lockear, gracias

C. Pauquez
03 de Julio del 2005
Intenta haciendo un SELECT FOR UPDATE. Eso impedira que un segundo usuario lea el registro hasta que el primero no haga COMMIT.

Saludos