Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Retornando várias tabelas de um procedimento armazenado


A maneira normal é obter tudo de uma vez.

apenas construa seu SELECT 's e você terá um DataSet preenchido com todas as tabelas.
using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(myConnString))
{
    using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand())
    {
        cmd.CommandText = "myMultipleTablesSP";
        cmd.Connection = conn;
        cmd.CommandType = CommandType.StoredProcedure;

        conn.Open();

        System.Data.SqlClient.SqlDataAdapter adapter = new System.Data.SqlClient.SqlDataAdapter(cmd);

        DataSet ds = new DataSet();
        adapter.Fill(ds);

        conn.Close();
    }
}

se por exemplo você retornar 2 tabelas no seu SP, como:
SELECT * FROM [TableA];
SELECT * FROM [TableB];

você acessaria essas tabelas como:
DataTable tableA = ds.Tables[0];
DataTable tableB = ds.Tables[1];