Heim >Datenbank >MySQL-Tutorial >Wie rufe ich Rückgabewerte gespeicherter Prozeduren in C# ordnungsgemäß ab?

Wie rufe ich Rückgabewerte gespeicherter Prozeduren in C# ordnungsgemäß ab?

Barbara Streisand
Barbara StreisandOriginal
2025-01-05 20:19:45199Durchsuche

How to Properly Retrieve Stored Procedure Return Values in C#?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn