Heim >Datenbank >MySQL-Tutorial >Wie rufe ich Rückgabewerte gespeicherter Prozeduren in C# ordnungsgemäß ab?
Rückgabewerte gespeicherter Prozeduren in C# abrufen
Betrachten Sie die folgende gespeicherte Prozedur:
ALTER PROCEDURE [dbo].[Validate] @a varchar(50), @b varchar(50) output AS SET @Password = (SELECT Password FROM dbo.tblUser WHERE Login = @a) RETURN @b GO
Diese Prozedur wird erfolgreich kompiliert . Um diese Abfrage auszuführen und den Rückgabewert zu erhalten, können Sie Code ähnlich dem folgenden schreiben:
using System.Data.SqlClient; using System.Configuration; ... SqlConnection SqlConn = new SqlConnection( ConfigurationManager.ConnectionStrings["MyLocalSQLServer"].ConnectionString.ToString()); System.Data.SqlClient.SqlCommand sqlcomm = new System.Data.SqlClient.SqlCommand("Validate", SqlConn); string returnValue = string.Empty; SqlConn.Open(); sqlcomm.CommandType = CommandType.StoredProcedure; SqlParameter param = new SqlParameter("@a", SqlDbType.VarChar); param.Direction = ParameterDirection.Input; param.Value = Username; sqlcomm.Parameters.Add(param); SqlParameter retval = sqlcomm.Parameters.Add("@b", SqlDbType.VarChar); retval.Direction = ParameterDirection.ReturnValue; sqlcomm.ExecuteNonQuery(); // MISSING string retunvalue = (string)sqlcomm.Parameters["@b"].Value;
Beachten Sie, dass die Ausnahmebehandlung der Kürze halber weggelassen wurde. Beim Ausführen der letzten Codezeile wird „null“ zurückgegeben. Um dieses Problem zu beheben, haben Sie vergessen, die Abfrage auszuführen. Hinzufügen sqlcomm.ExecuteNonQuery(); bevor Sie den Rückgabewert abrufen, wie unten gezeigt:
using System.Data.SqlClient; using System.Configuration; ... SqlConnection SqlConn = new SqlConnection( ConfigurationManager.ConnectionStrings["MyLocalSQLServer"].ConnectionString.ToString()); System.Data.SqlClient.SqlCommand sqlcomm = new System.Data.SqlClient.SqlCommand("Validate", SqlConn); string returnValue = string.Empty; SqlConn.Open(); sqlcomm.CommandType = CommandType.StoredProcedure; SqlParameter param = new SqlParameter("@a", SqlDbType.VarChar); param.Direction = ParameterDirection.Input; param.Value = Username; sqlcomm.Parameters.Add(param); SqlParameter retval = sqlcomm.Parameters.Add("@b", SqlDbType.VarChar); retval.Direction = ParameterDirection.ReturnValue; sqlcomm.ExecuteNonQuery(); // Include this line to execute the query string retunvalue = (string)sqlcomm.Parameters["@b"].Value;
Durch die Einbindung dieser Änderung sollten Sie in der Lage sein, den Rückgabewert erfolgreich aus der gespeicherten Prozedur abzurufen.
Das obige ist der detaillierte Inhalt vonWie rufe ich Rückgabewerte gespeicherter Prozeduren in C# ordnungsgemäß ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!