En el ejemplo utilizamos la base de datos PUBS que la podeis descargar desde Microsoft y vamos a listar los registros de las tablas:
- Authors
- mployee
- Jobs
- Publishers
Con lo que las selects quedarían de la siguiente forma:
Select top 5 * From Authors
Select top 5 * From employee
Select top 5 * From Jobs
Select top 5 * From publishers
Create Procedure ejm_multiples_querys
As
Select top 5 * From Authors
Select top 5 * From employee
Select top 5 * From Jobs
Select top 5 * From publishers
SqlConnection SqlConn = new SqlConnection("User ID=sa;Password=;Initial Catalog=PUBS;Data Source=localhost");
SqlConn.Open();
SqlCommand SqlCmd = new SqlCommand("ejm_multiples_querys", SqlConn);
SqlCmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter SqlDa = new SqlDataAdapter(SqlCmd);
DataSet DS = new DataSet();
SqlDa.Fill(DS);
Llenamos el DataGrid 1 con los datos del SELECT a la tabla authors
GridView1.DataSource = DS.Tables[0];
GridView1.DataBind();
GridView2.DataSource = DS.Tables[1];
GidView2.DataBind();
GridView3.DataSource = DS.Tables[2];
GridView3.DataBind();
GridView4.DataSource = DS.Tables[3];
GridView4.DataBind();
y se ejecutamos la stored procedure en el Query Analyzer de SQL Server vereis que los resultados son los mismos, cuatro conjuntos de resultados
Aquí se nos puede plantear la duda de en qué momento es óptimo utilizar este metodo o no dado que los resultados de las consultas guardan una imagen de la tabla en memoria, bueno, cada uno ha de ver el rendimiento de su web y ver si este método es mas óptimo que lanzar cuatro consultas o las que sean a la base de datos.
Saludos
Alex