InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
Tutorial PL/SQL
Introducción a PLSQL
Programación con PL/SQL
Fundamentos de PL/SQL
Tipos de datos en PL/SQL
Operadores en PL/SQL
Estructuras de control en PL/SQL
Bloques PL/SQL
Cursores en PL/SQL
Cursores Implicitos en PL/SQL
Cursores Explicitos en PL/SQL
Cursores de actualización en PL/SQL
Excepciones en PL/SQL
Excepciones personalizadas en PL/SQL
Propagacion de excepciones en PL/SQL
Subprogramas en PL/SQL
Procedimientos almacenados en PL/SQL
Funciones en PL/SQL
Triggers en PL/SQL
Subprogramas en bloques anónimos
Paquetes en PL/SQL
Registros PL/SQL
Tablas PL/SQL
Tipo VARRAY
BULK COLLECT
Transacciones con PL/SQL
Transacciones autónomas
SQL Dinamico
Funciones integradas de PL/SQL
Secuencias
PL/SQL y Java
También puedes ver ...
Excepciones personalizadas en PL/SQL
Como conectar a ORACLE con Java
Recuperar datos BLOB de ORACLE
Trabajar con datos de tipo BLOB en ORACLE
PL/SQL y Java
Secuencias
SQL Dinamico
Funciones integradas de PL/SQL
Transacciones con PL/SQL
Tipo VARRAY

Afiliados
La Web del programador
MundoProgramacion


 

Transacciones autónomas

    En ocasiones es necesario que los datos escritos por parte de una transacción sean persistentes a pesar de que la transaccion se deshaga con ROLLBACK.

    PL/SQL permite marcar un bloque con PRAGMA AUTONOMOUS_TRANSACTION. Con esta directiva marcamos el subprograma para que se comporte como transacción diferente a la del proceso principal, llevando el control de COMMIT o ROLLBACK independiente.

    Observese el siguiente ejemplo. Primero creamos un procedimiento y lo marcamos con PRAGMA AUTONOMOUS_TRANSACTION.


CREATE OR REPLACE PROCEDURE Grabar_Log(descripcion VARCHAR2)
IS
PRAGMA AUTONOMOUS_TRANSACTION
;
BEGIN
  INSERT INTO LOG_APLICACION
  (CO_ERROR, DESCRIPICION, FX_ERROR)
  VALUES
  (SQ_ERROR.NEXTVAL, descripcion, SYSDATE);
  COMMIT; -- Este commit solo afecta a la transaccion autonoma
END ;

    A continuación utilizamos el procedimiento desde un bloque de PL/SQL:


DECLARE
  producto PRECIOS%TYPE;
BEGIN
     producto := '100599';
     INSERT INTO PRECIOS
     (CO_PRODUCTO, PRECIO, FX_ALTA)
     VALUES
     (producto, 150, SYSDATE);
     COMMIT;
EXCEPTION
WHEN OTHERS THEN
    Grabar_Log(SQLERRM);     
    ROLLBACK;
/* Los datos grabados por "Grabar_Log" se escriben en la base
de datos a pesar del ROLLBACK, ya que el procedimiento está
marcado como transacción autonoma.
*/

END;

    Es muy común que, por ejemplo, en caso de que se produzca algún tipo de error queramos insertar un registro en una tabla de log con el error que se ha produccido y hacer ROLLBACK de la transacción. Pero si hacemos ROLLBACK de la transacción tambien lo hacemos de la insertción del log.

 


Inicio | Tutorial PL/SQL Transacciones con PL/SQLTutorial PL/SQLSQL Dinamico Versión para imprimir Foros de consulta


Añadir comentario ... Para preguntar utiliza los foros
Autor:

Título:


Para preguntar utiliza los foros.



Inicio | Tutorial PL/SQL Transacciones con PL/SQLTutorial PL/SQLSQL Dinamico Versión para imprimir

Transacciones autónomas
Autor: Pedro Herrarte Sánchez
Visitas: 21806 Fecha de publicación: 24/07/2006
Pedro Herrarte, es consultor independiente, ofreciendo servicios de consultoría, análisis, desarrollo y formación.

Posee mas de diez años de experiencia trabajando para las principales empresas de España.

Es especialista en tecnologías .NET, entornos Web, bases de datos (SQL Server y ORACLE) e integración de sistemas.

Es experto en desarrollo (C#, ASP.NET, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE).

Es fundador, diseñador y programador de www.devjoker.com.




Visitas: 42 | Comentarios: 0 | Archivo: Articulos
Visitas: 109 | Comentarios: 0 | Archivo: Articulos
Visitas: 155 | Comentarios: 0 | Archivo: Articulos
Categorias: ASP.NET
Visitas: 33 | Comentarios: 0 | Archivo: Articulos
Categorias: TFS
Visitas: 285 | Comentarios: 1 | Archivo: Articulos
Categorias: Visual Basic .NET|C#
Visitas: 842 | Comentarios: 2 | Archivo: Articulos
Categorias: C#|ASP.NET|HTML DHTML|XML|JavaScript|ASP.NET|ASP|PHP|Visual Studio
Visitas: 712 | Comentarios: 1 | Archivo: Articulos
Categorias: Administración|Tutorial SQL
Visitas: 451 | Comentarios: 0 | Archivo: Articulos
Categorias: ASP.NET
Visitas: 1053 | Comentarios: 1 | Archivo: Articulos
Categorias: ASP.NET|CSS|ASP.NET
Visitas: 250 | Comentarios: 0 | Archivo: Articulos
Categorias: TFS

Útimos temas recibidos en los foros ...
FORMULARIO ACCESS por jcifuentes ... [Access] 11 29/05/2007
Ysmael por Ysmael ... [SQL] 0 08/01/2009
Reflection por Maurito22 ... [C#] 2 06/01/2009
Programador por Robert ... [ORACLE] 0 07/01/2009
como insertar registros en un formulario de visual basic.net desde la base de datos sql server por orlan ... [SQL Server] 8 09/06/2008
quierocodigo de autogenerado del seguro por edwin garcia ramirez ... [Visual Basic .NET] 0 07/01/2009
Video gratis sobre AJAX con ASP.NET por alexxe ... [ASP.NET] 1 06/01/2009
calcular saldo acumulativo por cben ... [SQL] 5 30/12/2008
comparar 2 campos de 2 tablas usando el like por nani ... [SQL Server] 1 06/01/2009
Apagar ordenador remoto en C# por victoryiyo ... [C#] 1 07/01/2009
numero de AUTOGENERADO IPSS por carlos ... [Visual Basic .NET] 5 30/10/2008
Como mandar mensaje a Celular por Pako ... [C#] 63 13/03/2007

Access CGI JSP ORACLE UNIX
Actualidad HTML/DHTML/XHTML LINUX PHP Visual Basic .NET
ASP ISAPI MS DOS Power Builder Visual Basic 6.0
ASP.NET Java mySQL SQL WIN 98/NT/2000/XP
C# JavaScript Opinion SQL Server

devjoker  Te recomendamos además ...
02/09/2007 Procedimientos almacenados en Transact SQL    forma parte de...Tutorial de Transact SQL
21/02/2007 BULK COLLECT    forma parte de...Tutorial PL/SQL
18/10/2005 Enviar emails a través de un servidor SMTP autenticado con Java
28/04/2007 Como aumentar el número de descargas simultaneas en Internet Explorer.
06/05/2007 Programación con Transact SQL    forma parte de...Tutorial de Transact SQL
06/05/2007 Introducción a Transact SQL    forma parte de...Tutorial de Transact SQL
30/11/2008 Nuevo control Chart para ASP.NET
22/10/2005 Consultar datos. SELECT    forma parte de...Tutorial SQL
23/05/2006 Cursores en PL/SQL    forma parte de...Tutorial PL/SQL
22/10/2005 Insertar datos. INSERT    forma parte de...Tutorial SQL

 

Encuesta
¿A que perfil te adaptas mejor?
[Ver] [Votar]