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.
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
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: -)
Rückgabe von Daten mithilfe eines Rückgabecodes aus der Onlinedokumentation.
Tags und Links sql-server stored-procedures msdn