2017-04-11 4 views
-1

ストアプロシージャの出力としてregistrationIDを返します。ストアプロシージャはnullまたはint値を返すことができます。私は私のC#で次のコードを書いています。私はdbtype nullまたはintを設定したいと思います。SQL出力パラメータにdbtypeをNULLまたはIntに設定します。

p.Add("@TotalRebate", bk.TotalRebate); 
p.Add("@PromotionId", bk.PromotionId); 
p.Add("@RegistrationId", bk.RegistrationId, dbType: DbType.Int32, direction: ParameterDirection.Output); 
_db.Execute("InsertBookingNo", p, commandType: CommandType.StoredProcedure); 

    var registrationId = p.Get<int>("@RegistrationId"); 

おかげ

+0

あなたは例外を取得していますか?もし私たちが助けなければならないなら、もっとコードが必要です。 – mxmissile

+0

DBNullをnull以外の型にキャストしようとしています!データストリームが完了するまで(Query(...、バッファ済:false)の 'foreach'の後、またはGridReaderがQueryMultipleに配置された後)、出力/戻りパラメータには値が更新されません。ここではエラー –

+0

が編集されます問題が発生している箇所を含む、欠落しているコードを追加します。 – mxmissile

答えて

1
に行くに

まだあまりありませんが、あなたは、この試すことができます:

var o = p.Get("@RegistrationId"); 

if(o is DBNull.Value) 
{ 
    //value is null 
} 
else 
{ 
    registrationId = Convert.ToInt32(o); 
} 

またはNULL可能int型を使用する:

var registrationId = p.Get<int?>("@RegistrationId"); 
+1

次のコードを追加しました。それはうまく動作しています 'p.Add(" @ PromotionId "、bk.PromotionId); p.Add( "@ RegistrationId"、bk.RegistrationId、dbType:DbType.Int32、direction:ParameterDirection.Output); _db.Execute( "InsertBookingNo"、p、commandType:CommandType.StoredProcedure); var registrationId = p.Get ( "@登録ID"); –

関連する問題