Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Popolare ArrayList dal set di risultati di stored procedure

Quello che dovresti fare è invocare ExecuteReader() su quel cmd oggetto, in questo modo:

public static IEnumerable<int> GetAllVendors()
{
    using (var cmd = Data.GetCommand(Configuration.DatabaseOwnerPrefix + ".GetAllInformationAndHelpVendorIds", Connections.MyDbConnection))
    {
        using (var reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                yield return reader.GetInt32(0);
            }
        }
    }
}

Ciò presuppone che l'SQL restituirà una tabella la cui prima colonna (identificata dall'indice 0 al metodo GetInt32() ) sarà l'ID che stai cercando. Se l'SQL restituisce gli ID in un'altra colonna, regola l'indice sulla colonna in cui ti aspetti di trovarli.

Questa soluzione prevede anche che la connessione del comando sia già aperta. In caso contrario, puoi eseguire cmd.Connection.Open() appena prima di cmd.ExecuteReader() .