Heim >Datenbank >MySQL-Tutorial >Warum gibt mein C#-Code einen Nullwert zurück, wenn er einen Rückgabewert aus einer gespeicherten Prozedur abruft?
Fehlerbehebung beim Abrufen des Rückgabewerts aus einer gespeicherten Prozedur in C#
Wenn Sie versuchen, einen Rückgabewert aus einer gespeicherten Prozedur in C# abzurufen, kann dies passieren Es tritt ein Problem auf, bei dem der zurückgegebene Wert null ist. Hier ist eine detaillierte Erklärung des Problems und eine Lösung:
Problembeschreibung:
Sie haben eine gespeicherte Transact-SQL-Prozedur definiert, die zwei Parameter akzeptiert: @a als Eingabe und @b als Ausgabe. Die gespeicherte Prozedur setzt @b auf das Ergebnis einer Abfrage und Sie erwarten, den Wert von @b in Ihrem C#-Code abzurufen. Wenn Sie jedoch die gespeicherte Prozedur ausführen und versuchen, den Rückgabewert zu lesen, erhalten Sie null.
Code-Snippet:
SqlConnection SqlConn = ...; SqlCommand sqlcomm = new SqlCommand("Validate", SqlConn); sqlcomm.CommandType = CommandType.StoredProcedure; sqlcomm.Parameters.Add("...", SqlDbType.VarChar, ParameterDirection.Input); SqlParameter retval = sqlcomm.Parameters.Add("...", SqlDbType.VarChar); retval.Direction = ParameterDirection.ReturnValue; sqlcomm.ExecuteNonQuery(); // MISSING string retunvalue = (string)sqlcomm.Parameters["..."].Value;
Logischer Fehler:
Der fehlende Code in Ihrer C#-Routine ist der ExecuteNonQuery-Aufruf. Durch die Ausführung der gespeicherten Prozedur wird die Datenbankabfrage initiiert und der Ausgabeparameter @b aktualisiert. Ohne diesen Aufruf wird die gespeicherte Prozedur nicht ausgeführt und der Rückgabewert bleibt unverändert.
Lösung:
Fügen Sie die ExecuteNonQuery-Methode ein, bevor Sie den Rückgabewert abrufen:
sqlcomm.ExecuteNonQuery(); string retunvalue = (string)sqlcomm.Parameters["..."].Value;
Nachdem Sie diese Änderung vorgenommen haben, ruft Ihr Code den @b in der gespeicherten Prozedur zugewiesenen Rückgabewert korrekt ab.
Das obige ist der detaillierte Inhalt vonWarum gibt mein C#-Code einen Nullwert zurück, wenn er einen Rückgabewert aus einer gespeicherten Prozedur abruft?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!