Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Füllen Sie ArrayList aus der Ergebnismenge der gespeicherten Prozedur

Was Sie tun sollten, ist ExecuteReader() aufzurufen auf diesem cmd Objekt, etwa so:

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);
            }
        }
    }
}

Dies setzt voraus, dass die SQL eine Tabelle zurückgibt, deren erste Spalte (identifiziert durch den Index 0 an die Methode GetInt32() ) ist die gesuchte ID. Wenn die SQL die IDs in einer anderen Spalte zurückgibt, passen Sie einfach den Index an die Spalte an, in der Sie sie erwarten.

Diese Lösung erwartet auch, dass die Verbindung des Befehls bereits geöffnet ist. Wenn dies nicht der Fall ist, können Sie cmd.Connection.Open() ausführen kurz vor cmd.ExecuteReader() .