martes, 23 de noviembre de 2010

PROCEDIMIENTOS ALMACENADOS

Una característica de muchos gestores de bases de datos como Sql Server, es que permiten guardar las consultas para poder ejecutarlas desde nuestro código. Asi conseguimos abstraer nuestra lógica de datos de nuestra lógica de negocio. En Sql Server estas consultas se llaman procedimientos de almacenado. Un ejemplo de esto es
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE dbo.sp_test-- Add the parameters for the stored procedure here@IdFoo int
ASBEGIN
SELECT

FROMFoo
WHEREIdFoo = @IdFoo
END
GO
Este procedimiento recibe como parametro el entero @IdFoo, y busca en la tabla Foo, un registro que tenga el campo IdFoo igual al parametro de entrada @IdFoo. Para llamar este procedimiento de almacenado desde nuestro código tan sólo debemos hacer lo siguiente
public void ExecuteStoreProcedure(int idFoo)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand command = new SqlCommand())
{
connection.Open();

command.Connection = connection;
command.CommandType = System.Data.CommandType.StoredProcedure;
command.CommandText = "sp_test";
command.CommandTimeout = 10;

command.Parameters.AddWithValue("@IdFoo", idFoo);
SqlDataReader reader = command.ExecuteReader();
}
}
}
Como vemos es muy fácil, creamos una conexión, y un comando. A este comando le decimos que ejecutará el procedimiento sp_test y le pasamos el parametro idFoo como @IdFoo. El resultado de la consulta se guarda en un SqlDataReader. Ahora podremos recorrer este SqlDataReader para devolver algún dato o pasar la información a un objeto de negocio.
La principales ventajes de los procedimientos de almacenado son
  • Evita en parte los molestos ataques por inyección sql (sql injection).
  • La velocidad de la consulta es mayor.
  • Toda la logica de acceso a datos se encuentra en la base de datos.

No hay comentarios:

Publicar un comentario