Otra vez con la concurrencia...

Pero todavía tengo problemas porque no se como usar la instrucción, mira, use la instrucción que me diste así:
Begin
set transaction isolation level read committed;
insert into familias('wh','whisky');
end;
Y la primera vez lo hace bien, pero si quiero repetir la instrucción con datos cambiando me manda un error de:
ERROR at line 1:
ORA-01453: SET TRANSACTION must be first statement of transaction
ORA-06512: at line 2
Y ya no puedo utilizar ningún tipo de lectura, a menos que me desconecte y me vuelva a conectar, otra pregunta, si en vez de una inserción pongo un select así:
SQL> begin
2 set transaction isolation level read committed;
3 select * from familias;
4 end;
5 /
Entonces me manda el siguiente error:
ERROR at line 3:
ORA-06550: line 3, column 1:
PLS-00428: an INTO clause is expected in this SELECT statement
ORA-06550: line 3, column 1:
¿PL/SQL: SQL Statement ignored
es ke no se puede utilizar lectura terminada para hacer una consulta?
Es la primera vez que utilizo estas instrucciones así que disculpa la ignorancia. Ahh, también por cierto cuando intente probar lo mismo con read only, me dice que esperaba read committed o serializable, ¿por qué no funciona?, y por ultimo, ;-) la opción serializable seria el equivalente de lo que he leído como cursor stability,..
¿Para hacer updates ke opcion es? Read only, porke yo tenia entendido ke para updates era la opcion de lectura repetida (repeteable read).

1 respuesta

Respuesta
1
Sorry por la tardanza pero ahí va la respuesta...
El Set transaction lo tienes que usar como primera instrucción (tal y como lo tienes) y por eso te funciona la primera vez, para la segunda ya no tienes que utilizar el SET TRANSACTION, porque ya lo seteaste. El SET TRANSACTION se pierde cada vez que haces commit o rollback, es importante que lo pongas en la siguiente linea después del commit. De lo contrario, también te puede fallar.
En tu ejemplo en ningún momento tienes el commit, por eso es que no te funciona la segunda vez. Lo mismo para cuando haces select.
Yo ya hice la prueba con una tabla idéntica y si me funciono.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas