0

出力を返すストアド プロシージャがあります。ストアド プロシージャの出力パラメータの定義は次のとおりです。

@Success int output

次のステートメントを使用して、出力パラメーターから値を取得しています。エラーメッセージが表示されます

「指定されたキャストは無効です」

Visual Studio 2012 を使用しています。

int returnVal = (int)myCOmmand.Parameters["@Success"].Value;

何が問題なのか教えてください。そして、解決策を提供します。

助けてくれてありがとう。ヤギャ

4

1 に答える 1

1

次のように、実行後に値を取得するパラメーターを作成しました (o_id はパラメーター名です)。

IDbDataParameter o_id = cmd.CreateParameter();
o_id.ParameterName = "?o_id";
o_id.DbType = DbType.Int32;
o_id.Direction = ParameterDirection.Output;
cmd.Parameters.Add(o_id);

// Call the Stored Procedure
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText "= MyStoredProcedure";

db.ExecuteNonQuery(cmd);
int o_idValue =  int.Parse(o_id.Value.ToString());

この場合、dbIDbCommand を実行するデータベース層です。

int.Parse()おそらく、 (またはさらに良いint.TryParse())で問題を解決できます

于 2013-03-27T12:52:41.060 に答える