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
Freigeben: 2025-01-05 20:19:45
Original
250 Leute haben es durchsucht

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
Nach dem Login kopieren

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;
Nach dem Login kopieren

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;
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage