Ejecutar procedure dentro de transacción

Muchas veces, cuando ejecutamos un procedure, necesitamos que si hay algún error dentro de todo el proceso, todo lo que se ha hecho hasta el momento, se revierta.

Para esto, es que existen las transacciones

Código C#

internal int Insertar(BE_Plantilla pBE_Plantilla)
{
  int mintReturn = 0;
  int mint = 0;
  int lintCod_Return = 0;
  
  SqlConnection mcn = (SqlConnection)FactoriaConnection.GetConnection(DbConnectionId.SQL);
  SqlCommand mcmd = new SqlCommand("PGCSI_PLANTILLA", mcn);
  try
  {
    mcn.Open();
    SqlTransaction mtr = mcn.BeginTransaction();
    mcmd.Transaction = mtr;
    mcmd.CommandType = CommandType.StoredProcedure;
    
    mcmd.Parameters.Add("@DES_PLANTILLA", SqlDbType.VarChar).Value = pBE_Plantilla.Des_Plantilla;
    mcmd.Parameters.Add("@ESTADO", SqlDbType.VarChar).Value = pBE_Plantilla.Estado;               
    
    mcmd.Transaction = mtr;
    mintReturn = (int)mcmd.ExecuteNonQuery();
    
    if (mintReturn > 0)
    {
      mtr.Commit();
    }
    else
    {
      mtr.Rollback();
    }
  }
  catch (Exception ex)
  {
    mintReturn = -2;
  }
  finally
  {
    if (mcn.State == ConnectionState.Open)
      mcn.Close();
    mcn.Dispose();
    mcmd.Dispose();               
  }
  return mintReturn;
}


Si desean el código vb.net, me lo piden y lo transformo.

0 comentarios:

Publicar un comentario