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

kotani.k [E-MAIL ADDRESS DELETED]
2013年 2月 15日 (金) 06:06:08 JST


koalaさん

小谷です。

私もストアド関連は(も?)疎いので大変助かります。

ConversionUtil.ConvertTargetTypeでやっている処理を考えると、
koalaさんが挙げて下さった二案目(ConversionUtil.ConvertTargetTypeを使う方)が
処理・戻り値としてもコードの見た目の意味でも正なように思えます。

上記修正でコミットしてみました。
お手数ですが、Seasar.NETの最新コードを取得・コンパイルしてご確認いただけないでしょうか。

以上です。
よろしくお願い致します。


2013年2月15日 0:32 kubo <dbflute @ gmail.com>:
> 久保(jflute)です
>
> koalaさん、こんばんは
>
> 自分としては、ちょっとS2Daoの高度な利用で、
> なかなか深いコメントを返せずで申し訳ないですが、
> こういったフィードバックとても助かります。
> (他に同じ問題で困った人のためになりますので)
>
>
>
> #
> # ってことは...DBFlute.NETも同じ話か!?
> # DbCommandのParameterが DBNull だったら、
> # っていう分岐はありますね。
> # (InternalProcedureHandlerにて、参考までにと)
> #
>
> 2013/2/14 koala <send2xls @ hotmail.com>:
>>
>> 自己レスです。
>>
>> ストアドfunctionの戻り値は、Seasar.Dao.InterceptorsでConvertTargetTypeを使って返していたので、
>> outパラメータも同様に修正する方法を考えました。
>>
>> Seasar.Dao.Impl.ObjectBasicProcedureHandl er.cs
>>
>>>修正前
>>     args[i] = ((IDataParameter)cmd.Parameters[i + cnt]).Value;
>>
>>>修正後
>>     IDbDataParameter param = (IDbDataParameter)cmd.Parameters[i + cnt];
>>     args[i] = ConversionUtil.ConvertTargetType(param.Value, ArgumentTypes[i]);
>>
>> ご意見など頂ければ幸甚です。
>>
>>    # 前の投稿はhtmlメールで送信してしまったせいか、改行が少なくなって読みにくくなっていました。大変失礼致しました。
>>
>>
>> _______________________________________________ seasar-dotnet mailing list seasar-dotnet @ ml.seasar.org https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>> _______________________________________________
>> seasar-dotnet mailing list
>> seasar-dotnet @ ml.seasar.org
>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> _______________________________________________
> seasar-dotnet mailing list
> seasar-dotnet @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet


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