MSDN über den Rückgabewert der gespeicherten Prozedur

8

Kann jemand genau angeben, wo MSDN sagt, dass jede gespeicherte Benutzerprozedur standardmäßig 0 zurückgibt, wenn kein Fehler auftritt? Mit anderen Worten, könnte ich sicher sein, dass der unten angegebene Beispielcode bei einer gespeicherten Prozedur

ist %Vor%

sollte immer Null zurückgeben, wenn "someStatement" falsch ist und kein Fehler auftritt?

Ich weiß, dass es tatsächlich so funktioniert, aber ich habe keine explizite Aussage von Microsoft gefunden.

    
Ilya 05.04.2010, 13:17
quelle

4 Antworten

7

Es sieht so aus, als hätte der Rückgabewert einmal etwas bedeuten können (siehe Referenz von Pre SQL 2000 BOL Artikel zum Rückgabewert ) vor SQL Server 2000. Ich überprüfte, ob ich eine Liste dieser ursprünglichen Rückgabecodes speziell für MS SQL finden konnte, und fand die Folgen (Ich kenne seine Authentizität nicht, und die Werte werden nicht aufgelistet).

Nach dem Lesen all dieser Artikel sieht es so aus, als ob @return_status ein Parameter ist, der IMMER zurückgegeben wird, wenn eine gespeicherte Prozedur ausgeführt wird (auch wenn Sie sie nicht verwenden). Nach der RETURN Bücher Online-Artikel der Rückkehr-Code kann nicht null sein.

  

Bei Verwendung mit einer gespeicherten Prozedur   RETURN kann keinen Nullwert zurückgeben. Ob   Eine Prozedur versucht, eine Null zurückzugeben   Wert (zum Beispiel mit RETURN   @status, wenn @status NULL ist), a   Warnmeldung wird generiert und a   Wert von 0 wird zurückgegeben.

Das Ausführen des folgenden T-SQL zeigt das definitiv,

%Vor%

Sie erhalten

%Vor%

Am Ende sieht es so aus, als wäre die Antwort, weil @return_status nicht null sein kann (0 wenn nicht gesetzt oder auf NULL gesetzt ist) ...

Was die Fehlercodes betrifft, die in der angeblichen BOL erwähnt werden Artikel für SQL 7.0, meine Vermutung wäre ein alter Vorbehalt von Sybase ... Sybase 5.0 Handbuch

Kris

    
KSimons 05.04.2010, 17:16
quelle
6

RETURN auf MSDN

Bearbeiten:

Der Link sagt

  

Bei Verwendung mit einer gespeicherten Prozedur   RETURN kann keinen Nullwert zurückgeben. Ob   Eine Prozedur versucht, eine Null zurückzugeben   Wert (zum Beispiel mit RETURN   @status, wenn @status NULL ist), a   Warnmeldung wird generiert und a   Wert von 0 wird zurückgegeben.

Man könnte sagen, dass kein RETURN = RETURN NULL = RETURN 0 ist. Aber es wird keine Warnung ausgegeben, weil Sie RETURN NULL nicht ausgeführt haben. Und NULL wird erwartet, weil es eine gespeicherte Prozedur ist.

Auch die Ausführung gespeicherter Prozeduren ermöglicht

%Vor%

Also etwas muss zurückgegeben werden, weil wir immer einen Wert erwarten, niemals NULL

Ich habe mich darauf verlassen, dass Null für 12 Jahre zurückgegeben wird, selbst wenn MSDN es nicht sagt. Sowie noch viele von uns: -)

    
gbn 05.04.2010 13:23
quelle
0

Wenn Sie in Ihrem Client etwas Logik ändern, warum geben Sie nicht "0" zurück und machen es expliziter?

    
Tim Mahy 05.04.2010 13:20
quelle
0

Rückgabe von Daten mithilfe eines Rückgabecodes aus der Onlinedokumentation.

    
John Saunders 05.04.2010 13:30
quelle