2016-03-28 7 views
1

Was sind die Regeln für, wenn eine gespeicherte Prozedur eine Ergebnismenge zurückgibt?Wann wird eine gespeicherte Prozedur eine Ergebnismenge zurückgeben

Wenn ich eine SELECT-Anweisung in der Nähe des unteren Rands hinzufügt, wird sie als eine weitere Ergebnismenge zurückgegeben.

Aber ich füge einen SELECT an den Anfang dann wird es nicht in der Ergebnismenge zurückgegeben.

Unter welchen Umständen wird SELECT als Ergebnismenge zurückgegeben? Wenn andere Anweisungen folgen, scheint es nicht zurückgegeben zu werden, welche?

+2

Können Sie ein Beispiel veröffentlichen, bei dem eine SELECT-Anweisung nicht zurückgegeben wird? – David

+1

Wenn Sie eine "normale" 'SELECT'-Anweisung haben (** Variablen ** nicht aus den Ergebnissen setzen - sondern nur * die Daten auswählen) - ** wird ** an den Aufrufer zurückgegeben –

+0

Sagen Sie Sie manchmal Haben Sie mehrere Ergebnismengen, die zurückgegeben werden? Was macht Ihre gespeicherte Prozedur nach der Anweisung 'select'? Auf welches Programm werden die Ergebnisse zurückgeführt? (Dies ist wichtig zu wissen, da die Art und Weise, wie Sie die Ergebnisse analysieren, von der aufrufenden App abhängt.) –

Antwort

0

Die gespeicherte Prozedur gibt als Ergebnis das letzte SELECT zurück.

Es beinhaltet nicht die select into oder eine Variable select

Sie können einige Tricks, mit Einstellung zu tun Art multipler Ergebnis mit UNION die Ergebnisse Anzeige verwenden, um ein Hilfsfeld zurückkehren, um die Ergebnisse zu entmischen.

werfen Sie einen Blick in multiple result in stored procedure

2

Eine gespeicherte Prozedur mehrere Ergebnismengen zurückgeben kann.

Wenn Sie die gespeicherte Prozedur von einer Front-End-Anwendung wie asp.net konsumieren, müssen Sie möglicherweise die Ergebnismengensammlung durchlaufen, um alle zu sehen.

Der einzige Weg, den die anderen Anweisungen in der gespeicherten Prozedur verhindern würde, dass eine SELECT-Anweisung Ergebnisse zurückgibt, wäre, wenn sie verhindern, dass sie jemals ausgeführt wird. (Wie IF...ELSE Blöcke, oder die RETURN Befehl, der Ausführung usw. stoppt)

So zu "was ist die Regel?" Zu beantworten, ist die Regel, wenn die SELECT-Anweisung überhaupt ausgeführt wird, und wenn es ein Ergebnis zurückgibt überhaupt gesetzt, dann gibt es eine Ergebnismenge zurück.

Verwandte Themen