[seasar-dotnet:2233] Re: [S2Dao.NET]ORACLEのストアド呼び出しでout stringパラメータを''で返すとInvalidCastExceptionが発生する

koala [E-MAIL ADDRESS DELETED]
2013年 2月 15日 (金) 12:47:04 JST


小谷さん
お世話になっております。koalaです。

> >> Seasar.Dao.Impl.ObjectBasicProcedureHandler.cs
> >>
> >>>修正前
> >> args[i] = ((IDataParameter)cmd.Parameters[i + cnt]).Value;
> >>
> >>>修正後
> >> IDbDataParameter param = (IDbDataParameter)cmd.Parameters[i + cnt];
> >> args[i] = ConversionUtil.ConvertTargetType(param.Value, ArgumentTypes[i]);

> ConversionUtil.ConvertTargetTypeでやっている処理を考えると、
> koalaさんが挙げて下さった二案目(ConversionUtil.ConvertTargetTypeを使う方)が
> 処理・戻り値としてもコードの見た目の意味でも正なように思えます。
> 
> 上記修正でコミットしてみました。
> お手数ですが、Seasar.NETの最新コードを取得・コンパイルしてご確認いただけないでしょうか。

ObjectBasicProcedureHandler.cs を最新版に差し替えて、
件名のExceptionが解消されたことを確認できました。
お忙しいところご対応ありがとうございました。

コードの見た目という意味では、ret = param.Value; の方も
変換してしまった方が良い気もしてきました。
・・・となると HashtableBasicProcedureHandler.cs の方も・・・

ORACLEでの「動作としては」現状でOKなので、何か出てきたときに対応で十分だと思います。

以上です。

 		 	   		  


seasar-dotnet メーリングリストの案内