Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Oracle (https://www.clubdelphi.com/foros/forumdisplay.php?f=22)
-   -   savepoint en oracle (https://www.clubdelphi.com/foros/showthread.php?t=3027)

Jaco 19-08-2003 00:18:23

savepoint en oracle
 
alguien ha usado un savepoint (PL/SQL), me puede explicar mas al respecto???.
Gracias..:confused:

delphi.com.ar 19-08-2003 16: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.

Código:

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 20: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 21: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 01: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 16: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 17:22:55

con eso me queda claro..
Gracias..


La franja horaria es GMT +2. Ahora son las 20:39:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi