C# でのストアド プロシージャの戻り値の取得
次のストアド プロシージャについて考えます。
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
このプロシージャは正常にコンパイルされます。 。このクエリを実行して戻り値を取得するには、次のようなコードを作成します。
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;
簡潔にするために例外処理が省略されていることに注意してください。コードの最後の行を実行すると、「null」が返されます。この問題を解決するには、クエリを実行するのを忘れています。 sqlcomm.ExecuteNonQuery(); を追加します。以下に示すように、戻り値を取得する前に、
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;
この変更を組み込むことで、ストアド プロシージャから戻り値を正常に取得できるようになります。
以上がC# でストアド プロシージャの戻り値を適切に取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。