Ejecutar Stored Procedures en c# desde ASP.NET

Ejecutar un stored procedure (Procedimiento almacenado) de SQL Server es bastante sencillo y solo cambia de ejecutar una sentencia SQL en un par de detalles a la hora de codificar. Actualizado el 12.03.2011

Versión para VB.NET

En este ejemplo vamos a ver como ejecutar dos stored procedures, uno sin parámetros y otra con parámetros.
En el primer ejemplo ejecutaremos este stored procedure que hace un listado de la tabla authors de la base de datos PUBS:

CREATE PROCEDURE listado_authors

AS
Select * From authors

El código c# quedaría de la siguiente forma, asignando el resultado del dataset a un GridView

SqlConnection conn = new SqlConnection(“Server=localhost;Database=PUBS;Uid=sa;Pwd=as”);

SqlCommand cmd = new SqlCommand();

cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = “listado_authors”;
cmd.Connection = conn;

DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);

da.Fill(ds);

GridView1.DataSource = ds;
GridView1.DataBind();

¿Como quedaria este código si ejecutaramos una sentencia SQL?
Sería muy similar

SqlConnection conn = new SqlConnection(“Server=localhost;Database=PUBS;Uid=sa;Pwd=as”);
SqlCommand cmd = new SqlCommand(“Select * From authors”, conn);
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);

da.Fill(ds);

GridView1.DataSource = ds;
GridView1.DataBind();

Como veis cambia muy poco.
Ahora vamos a ver el otro ejemplo en el que ejecutaremos una stored procedure pasandole un parametro.

CREATE PROCEDURE listado_autores_params
@estado char(2)
AS
Select * From authors where state = @estado

La forma de pasar parametros es la siguiente:

SqlParameter[] param = new SqlParameter[1];
param[0] = new SqlParameter(“@estado”, SqlDbType.Char);
param[0].Value = “CA”;

Creamos una variable SqlParameter y asignamos los parametros del stored procedure, y despues asignamos el SqlParameter al command:

cmd.Parameters.AddRange(param);

si el stored procedure tuviera más parametros, estos se los asignariamos de la siguiente forma:

param[1] = new SqlParameter(“@Parametro2″, SqlDbType.Char);
param[1].Value = “CA”;

El código en c# quedaria de la siguiente forma:

SqlConnection conn = new SqlConnection(“Server=localhost;Database=PUBS;Uid=sa;Pwd=as”);
SqlCommand cmd = new SqlCommand();

SqlParameter[] param = new SqlParameter[1];
param[0] = new SqlParameter(“@estado”, SqlDbType.Char);
param[0].Value = “CA”;

cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = “listado_autores_params”;
cmd.Connection = conn;
cmd.Parameters.AddRange(param);

DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);

da.Fill(ds);

GridView1.DataSource = ds;
GridView1.DataBind();

Podemos ver que es igual de sencillo ejecutar un Stored Procedure que una sentencia SQL y el rendimiento mejorara en vuestras aplicaciones si ejecutais storeds procedures

Enlaces relacionadas:

Código fuente del artículo 

Y esto es todo, feliz programming!!
Saludos
Alex.

Comenta el artículo