Grabar regitros e bloque usndo prosedimiento almacenado

28/03/2008 - 18:19 por Napoleon | Informe spam
Saludos,

La cuestion es que deseo grabar registros en bloque es decir,,, que se
digita una factura y por ende su detalle,, al grabar la cabeza no hay
problema,, pues se dispara la intrucion de insercion y ya tengo generado la
cabeza de la factura, el problema surge al grabar el detalle, pues tengo que
barrer fila por fila y eso inplica que a todo momento se va a la bbdd
(conecta y desconecta) y si me surge un error en la insercion en una fila
intermedia tendria que hacer una rutina para borrar los registros anteriores
a la fila y a la cabeza,,,

yo trabajo esclusivamente con procedimientos almacenados es decir tengo un
sp, par insertar cabeza y un para detalle, lo que deseo es cargar la rutina
de insercion en una especie de bloque o algo parecido y hacer un solo
conectado y desconectado a la base de datos
Porfavor podrian darme una guia de como poder hacer esto, y si me pueden
ayudar con un ejemplo o documentacion par poder realizar este proceso

Gracias
 

Leer las respuestas

#1 edcha
18/04/2008 - 01:34 | Informe spam
Hola Napoleon.

Lo que quieres hacer esta relacionado con SqlTransaction aqui te dejo
el ejemplo que esta en la ayuda de .Net
si deseas puedes buscar mas sobre esto.

espero te sea de ayuda



private static void ExecuteSqlTransaction(string connectionString)
{
using (SqlConnection connection = new
SqlConnection(connectionString))
{
connection.Open();

SqlCommand command = connection.CreateCommand();
SqlTransaction transaction;

// Start a local transaction.
transaction connection.BeginTransaction("SampleTransaction");

// Must assign both transaction object and connection
// to Command object for a pending local transaction
command.Connection = connection;
command.Transaction = transaction;

try
{
command.CommandText "Insert into Region (RegionID, RegionDescription)
VALUES (100, 'Description')";
command.ExecuteNonQuery();
command.CommandText "Insert into Region (RegionID, RegionDescription)
VALUES (101, 'Description')";
command.ExecuteNonQuery();

// Attempt to commit the transaction.
transaction.Commit();
Console.WriteLine("Both records are written to
database.");
}
catch (Exception ex)
{
Console.WriteLine("Commit Exception Type: {0}",
ex.GetType());
Console.WriteLine(" Message: {0}", ex.Message);

// Attempt to roll back the transaction.
try
{
transaction.Rollback();
}
catch (Exception ex2)
{
// This catch block will handle any errors that may
have occurred
// on the server that would cause the rollback to
fail, such as
// a closed connection.
Console.WriteLine("Rollback Exception Type: {0}",
ex2.GetType());
Console.WriteLine(" Message: {0}", ex2.Message);
}
}
}
}

Preguntas similares