PDA

Ver la Versión Completa : savepoint en oracle


Jaco
19-08-2003, 01:18:23
alguien ha usado un savepoint (PL/SQL), me puede explicar mas al respecto???.
Gracias..:confused:

delphi.com.ar
19-08-2003, 17:01:10
La idea de los SavePoints es manejar por pasos las transacciones, pudiendo hacer rollbacks hasta un punto marcado por el savepoint y no por toda la sesión.


INSERT INTO ...;
SAVEPOINT A;
UPDATE ....;
SAVEPOINT B;
INSERT INTO ...;
SAVEPOINT C;
IF .... THEN
ROLLBACK TO B;
ELSE
COMMIT;
END;


Digamos que el ejemplo no es nada útil, pero la idea es demostrar la funcionalidad de los savepoints.

Saludos!

Jaco
19-08-2003, 21:51:23
pero por ejemplo en la sentencia IF....THEN como podria preguntar que las ordenes Sql anteriores se hallan ejecutado bien???..
Gracias

delphi.com.ar
19-08-2003, 22:51:27
Cuando una consulta no se ejecuta bien, esta produce un error. Para eso te recomiendo investigar la captura de errores de PLSQL, es muy parecida a ADA.
Básicamente cada bloque (begin..end), puede capturar errores.. Ej:

[CODE]
FUNCTION GET_ALGO(AId IN NUMBER) RETURN NUMBER AS
nResult NUMBER;
BEGIN
SELECT ...
INTO nResult
FROM TABLA
WHERE ID = AId;

RETURN nResult;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN 0;
WHEN OTHERS THEN
RETURN -1;
END;

Y se podrían anidar bloques dentro de este, con sus respectivas capturas de errores.

Saludos!

Jaco
21-08-2003, 02:57:08
existe alguna dirección donde salga algun ejemplo mas concreto respecto a los Savepoint.... donde pueda sacar la manera de implementarlo??, he leido bastante pero no se como implementarlo en un caso practico..
Gracias de antemano..

delphi.com.ar
21-08-2003, 17:12:53
Te digo que prácticamente en los últimos 5 años no los he usado nunca... recuerdos haberlos usado en la época del sqlplus, cuando uno iba probando algo y si fallaba quería deshacer los cambios hasta tal punto... Pero dentro de un procedure, evito utilizar transacciones, a no ser que sea un proceso muy grande.
Si deseas buscar ejemplos, en oracle.com no deben faltar.

Saludos!

Jaco
21-08-2003, 18:22:55
con eso me queda claro..
Gracias..