2016-05-26 3 views
-3

Eigentlich habe ich eine Stored Procedure (die ein Objekt als Eingabe nimmt), die entweder zwei oder drei Tabelle (Resultsets) zurückgibt. Jetzt muss ich die Objekte nach der Anzahl der Ergebnismengen kategorisieren. Wie kann ich das programmatisch machen? Der Vorgang ist nicht bearbeitbar. Ansonsten war es ein kleiner Job, der mit einer Flagge gemacht wurde. Vielen Dank im VorausWie zähle ich die Anzahl der Ergebnismengen, die von einer gespeicherten Prozedur zurückgegeben werden? (SQL Server 2012)

+1

zeigen Sie einige Beispiele oder schauen Sie hier, wie Sie eine gute Frage stellen: https: //spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ – TheGameiswar

+0

Sie sollten angeben, wie Sie gespeicherte Prozedur aufrufen! –

+0

Ich rufe die gespeicherte Prozedur durch eine andere Prozedur (die eine Schleife hat) .. – Tanmoy

Antwort

0

Zählen Sie die Anzahl der erfolgreichen NextResult() Anrufe zu Ihrem SqlDataReader.

Update nach der Diskussion in den Kommentaren.

Ergebnissätze werden sofort verfügbar. Das heißt, die erste kann lange vor dem Abschluss der gespeicherten Prozedur verfügbar sein, und solange die Prozedur ausgeführt wird, gibt es keine Möglichkeit (abgesehen von der Quellcodeanalyse) festzustellen, wie viele weitere Ergebnismengen noch verfügbar sind. Also müssen Sie die Prozedur bis zum Ende ausführen, alle Ergebnismengen abrufen und nur dann können Sie sie richtig zählen. Was Sie vorschlagen, ist effektiv gespeicherte Prozedur auf SQL Server bis zum Ende ausgeführt und analysieren, wie viele Ergebnismengen verfügbar wurde. Das kann (Art) durch EXEC ... WITH RESULT SETS (SQL Server 2012 und on) mit der Fehlerbehandlung getan werden, aber das wird drastisch ineffizient sein.

Wenn Sie eine neue Prozedur erstellen können, warum implementieren Sie die vorhandene nicht mit einem zusätzlichen Rückgabewert?

+0

Gibt es keine Möglichkeit, es von ** nur SQL Server ** zu erledigen? – Tanmoy

+1

Sicher gibt es, aber ich dachte "Der Vorgang ist nicht editierbar" ... –

+0

Ja. Deshalb denke ich darüber nach, eine neue Prozedur zu erstellen und die vorherige Prozedur aufzurufen und die Anzahl der Tabellen zu zählen. Gibt es einen Weg es zu tun? – Tanmoy

0

Erstellen Sie ein Dataset, und füllen Sie es, indem Sie die gespeicherte Prozedur aufrufen. Zählen Sie dann die Tabellen des Datasets.

+0

Gibt es keine Möglichkeit, dies nur von SQL Server zu erledigen? Ich denke darüber nach, eine neue Prozedur zu erstellen und die vorherige Prozedur aufzurufen und die Anzahl der Tabellen zu zählen. Gibt es einen Weg es zu tun? – Tanmoy

Verwandte Themen