ホームページ > データベース > mysql チュートリアル > ストアド プロシージャから戻り値を取得するときに、C# コードが null 値を返すのはなぜですか?

ストアド プロシージャから戻り値を取得するときに、C# コードが null 値を返すのはなぜですか?

Patricia Arquette
リリース: 2025-01-05 21:20:43
オリジナル
281 人が閲覧しました

Why is my C# code returning a null value when retrieving a return value from a stored procedure?

C# でのストアド プロシージャからの戻り値の取得のトラブルシューティング

C# でストアド プロシージャから戻り値を取得しようとすると、次のことが考えられます。戻り値が null になるという問題が発生します。この問題と解決策の詳細な説明は次のとおりです。

問題の説明:

入力として @a という 2 つのパラメーターを取る Transact-SQL ストアド プロシージャを定義しました。出力として @b を返します。ストアド プロシージャは @b をクエリの結果に設定し、C# コードで @b の値を取得することが期待されます。ただし、ストアド プロシージャを実行して戻り値を読み取ろうとすると、null が返されます。

コード スニペット:

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;
ログイン後にコピー

ロジック エラー:

C# ルーチンに欠けているコード部分は、ExecuteNonQuery 呼び出しです。ストアド プロシージャを実行すると、データベース クエリが開始され、出力パラメータ @b が更新されます。この呼び出しがないとストアド プロシージャは実行されず、戻り値は変更されません。

解決策:

戻り値を取得する前に ExecuteNonQuery メソッドを含めます:

sqlcomm.ExecuteNonQuery();
string retunvalue = (string)sqlcomm.Parameters["..."].Value;
ログイン後にコピー

この変更を加えた後、コードは格納されている @b に割り当てられた戻り値を正しく取得するようになります。手順。

以上がストアド プロシージャから戻り値を取得するときに、C# コードが null 値を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート