2009-08-17 13 views
1

Kann mir jemand sagen, wie ich die Ausgabe von einer gespeicherten SQL-Prozedur steuern kann, die mehr als einen Satz von Ausgaben zurückgibt?SQL-gespeicherte Prozedur mehrere Ausgänge in C steuern

ich derzeit tue folgendes:

 DataTable allData = new DataTable(); 
     SqlConnection connection = new SqlConnection(mySource); 

     SqlCommand cmd = new SqlCommand(procedureName, connection); 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.Add(paramName, SqlDbType.Int); 
     cmd.Parameters[paramName].Value = paramValue; 

     connection.Open(); 

     SqlDataAdapter adapter = new SqlDataAdapter(cmd); 
     adapter.Fill(allData); 

     connection.Close(); 

nun das funktioniert gut, wenn das Verfahren nur einen Ausgangswert hat, aber wie gehe ich mit den folgenden:

Meine gespeicherten Prozedur im Großen und Ganzen das tut folgende:

Es ruft eine Reihe anderer gespeicherter Prozeduren auf, um eine dynamische SQL-Abfrage zu erstellen (lasst uns diese @query aufrufen) und ruft dann EXECUTE (@query) auf, das eine SELECT-Anweisung ausführt.

Mit dem obigen Code-Snippet wird das Ergebnis der SELECT-Abfrage zurückgegeben, was in Ordnung ist. Aber was ich auch so gerne hätte, hat die Zeichenfolge @query zurückgegeben. Ich kann es als Ausgabetyp angeben und SQL von ihm holen lassen, aber wie kann ich von C# darauf zugreifen? (Tatsächlich, genauer gesagt, wenn ich dies tun, den obigen Code snipped gibt nur die Zeichenfolge @query und gibt nicht länger die Ergebnisse der SELECT)

Dank

Karl

Antwort

3

Sie mögen dies tun können:

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

dann jedes Ergebnis der SELECT ist in verschiedenen datatable

3

Verwendung SqlDataReader.NextResult. Dieses kleine Bit verschiebt Sie von der Verwendung von SqlDataAdapter, aber Sie können weiterhin DataTable mit DataTable.Load

auffüllen