[seasar-dotnet:1110] Re: S2Dao.NET、DBFlute - Oracleのパッケージ対応について

k.moriwaki [E-MAIL ADDRESS DELETED]
2008年 10月 30日 (木) 10:24:49 JST


久保さん
森脇です

dbflute-0.8.3にてファンクション、パッケージのファンクションが
正常に実行されることをMbUnitで確認しました。
対応ありがとうございました。


2008/10/29 23:54 k. moriwaki <[E-MAIL ADDRESS DELETED]>:
> 森脇です
>
>> http://dbflute.sandbox.seasar.org/download/dbflute/dbflute-0.8.3.zip
>> (DBFlute-0.8.3のSNAPSHOT)
>>
>> にて対応しました。
>> お手数ですが、ご確認頂けますでしょうか?
> おお、迅速な対応ありがとうございます。
> 明日にでも試してみます。
>
>
> 2008/10/29 23:48 kubo <[E-MAIL ADDRESS DELETED]>:
>> 久保(jflute)です。
>>
>> http://dbflute.sandbox.seasar.org/download/dbflute/dbflute-0.8.3.zip
>> (DBFlute-0.8.3のSNAPSHOT)
>>
>> にて対応しました。
>> お手数ですが、ご確認頂けますでしょうか?
>> (dbflute-noracle-exampleにてExampleもございます)
>>
>> また、C#版DBFluteはテスト環境がMySQLとOracleしか
>> ありません。(Java版は7DB全てあるのですが...)
>> 他のDBでのプロシージャ実行に影響あるかどうかが
>> 確認できませんので、もしよろしければ、
>> ML読んでるどなたか試して頂けると非常に助かります。
>>
>> 2008/10/29 kubo <[E-MAIL ADDRESS DELETED]>:
>>> 久保(jflute)です。
>>>
>>>> パラメータが存在しないファンクションにも関わらず
>>>> 「'Xxx'の呼出しで、引数の数または型が正しくありません」
>>>> というエラーになりました。
>>>> ADO.NETの呼び出しで何か工夫しないといけないのかもしれません。
>>>
>>> ファンクションは、戻り値があるというところが
>>> プロシージャと違うところですが(Oracleの場合)、
>>> そのハンドリングがうまくいっていないようでした。
>>> Javaでは戻り値は内部的にOUTパラメータとして
>>> 扱うことで取得することができましたが、C#では
>>> 違うようなので修正します。
>>> (Exampleで試し実装して実行できました)
>>>
>>> 2008/10/29 kubo <[E-MAIL ADDRESS DELETED]>:
>>>> 久保(jflute)です。
>>>>
>>>> C#版DBFlute + Oracleストアドファンクションで
>>>> 同じエラーが再現しました。
>>>> (dbflute-noracle-exampleにてExampleをコミットしました)
>>>>
>>>> パラメータが存在しないファンクションにも関わらず
>>>> 「'Xxx'の呼出しで、引数の数または型が正しくありません」
>>>> というエラーになりました。
>>>> ADO.NETの呼び出しで何か工夫しないといけないのかもしれません。
>>>> (どなたかADO.NETからファンクションを呼び出した
>>>> 経験のある方いらっしゃらないでしょうか!?)
>>>>
>>>> 2008/10/29 k. moriwaki <[E-MAIL ADDRESS DELETED]>:
>>>>> 森脇です。
>>>>>
>>>>>> すいません、そのファンクションでのエラー内容は
>>>>>> 以前のメールでもらったのと同じ内容でしょうか?
>>>>> すいません、ちょっと環境が無いので確認できませんが
>>>>> たしか同じ内容だったはずです。
>>>>>
>>>>>
>>>>> 2008/10/29 18:07 kubo <[E-MAIL ADDRESS DELETED]>:
>>>>>> 久保(jflute)です。
>>>>>>
>>>>>>>> プロシージャ、パッケージのプロシージャは実行できましたが、、
>>>>>>>> ファンクション、パッケージのファンクションはエラーになりました。
>>>>>>
>>>>>> すいません、そのファンクションでのエラー内容は
>>>>>> 以前のメールでもらったのと同じ内容でしょうか?
>>>>>>
>>>>>> 2008/10/29 kubo <[E-MAIL ADDRESS DELETED]>:
>>>>>>> 久保(jflute)です。
>>>>>>>
>>>>>>> 森脇さん、こんばんは
>>>>>>>
>>>>>>> 取り急ぎコメントします。
>>>>>>>
>>>>>>>> プロシージャ、パッケージのプロシージャは実行できましたが、、
>>>>>>>> ファンクション、パッケージのファンクションはエラーになりました。
>>>>>>> なるほど、了解です。
>>>>>>> ポイントはファンクションのようですね。
>>>>>>>
>>>>>>> ファンクションに関しては、Example上では
>>>>>>>
>>>>>>> Java版:ファンクションOK、パッケージファンクション未確認
>>>>>>> C#版:両方とも未確認
>>>>>>>
>>>>>>> です。
>>>>>>> ちょと後で試してみます。
>>>>>>> (夜になります)
>>>>>>>
>>>>>>> 2008/10/29 k. moriwaki <[E-MAIL ADDRESS DELETED]>:
>>>>>>>> 藤井さん
>>>>>>>> 森脇です
>>>>>>>>
>>>>>>>> 回答ありがとうございます。
>>>>>>>>
>>>>>>>>> とあるので、ストアド?ファンクション?のDDLの方から一度確認して
>>>>>>>>> いただけないでしょうか。
>>>>>>>> SQL Plusで実行してみましたが問題なく実行されました。
>>>>>>>>
>>>>>>>> DBFluteからではなくS2DAO.NETで直接呼べるか試してみます。
>>>>>>>>
>>>>>>>>
>>>>>>>> 2008/10/27 2:19 Hiroaki Fujii <[E-MAIL ADDRESS DELETED]>:
>>>>>>>>> コミッタの藤井です。
>>>>>>>>>
>>>>>>>>> ご返事が遅くなり、申し訳ありません。
>>>>>>>>>
>>>>>>>>> Quillを使った結果しか試せてませんが、次のようなinterfaceを
>>>>>>>>> 使ってテストしました。
>>>>>>>>> 「パッケージ.ファンクション」形式です。
>>>>>>>>>
>>>>>>>>> [S2Dao]
>>>>>>>>> [Implementation]
>>>>>>>>> [Bean(typeof (SampleDto))]
>>>>>>>>> public interface IHoge
>>>>>>>>> {
>>>>>>>>>    [Procedure("test_pack.get_amount")]
>>>>>>>>>    int GetAmount(int id);
>>>>>>>>>
>>>>>>>>>    [Procedure("test_pack.get_name")]
>>>>>>>>>    string getName(int id, int amount);
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>> S2DAO.NET側では特に問題なく、実行できました。
>>>>>>>>>
>>>>>>>>> エラーを見ると、
>>>>>>>>>> ORA-06550: 行1、列15:
>>>>>>>>>> PLS-00306: 'NAME'の呼出しで、引数の数または型が正しくありません。
>>>>>>>>>> ORA-06550: 行1、列7:
>>>>>>>>> とあるので、ストアド?ファンクション?のDDLの方から一度確認して
>>>>>>>>> いただけないでしょうか。
>>>>>>>>>
>>>>>>>>> よろしくお願いします。
>>>>>>>>>
>>>>>>>>> k.moriwaki さんは書きました:
>>>>>>>>>> 森脇です
>>>>>>>>>>
>>>>>>>>>>> もし「パッケージ名.プロシージャ名」で呼び出せるのであれば、
>>>>>>>>>>> DBFluteがSql2Entityで自動生成するProcedurePmbを参考に
>>>>>>>>>>> 手動でPmbを作って、ProcedureNameにパッケージ名を付与すれば
>>>>>>>>>>> 実行はできるかもしれません。(未検証)
>>>>>>>>>> これは試して見たんですが例外が発生しました。
>>>>>>>>>> で、そもそもS2Dao.NETが対応していない為発生しているのではと思って
>>>>>>>>>> メールした次第です。
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> 以下ログです。
>>>>>>>>>>
>>>>>>>>>> Message: Look! Read the message below.
>>>>>>>>>> /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
>>>>>>>>>> The SQL failed to execute!
>>>>>>>>>>
>>>>>>>>>> [Advice]
>>>>>>>>>> Please confirm the Exception message.
>>>>>>>>>>
>>>>>>>>>> [Exception]
>>>>>>>>>> Seasar.Framework.Exceptions.SQLRuntimeException
>>>>>>>>>> [ESSR0071]SQLで例外が発生しました。理由はOracle.DataAccess.Client.OracleException
>>>>>>>>>> ORA-06550: 行1、列15:
>>>>>>>>>> PLS-00306: 'NAME'の呼出しで、引数の数または型が正しくありません。
>>>>>>>>>> ORA-06550: 行1、列7:
>>>>>>>>>> PL/SQL: Statement ignored    場所
>>>>>>>>>> Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32
>>>>>>>>>> errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx*
>>>>>>>>>> pOpoSqlValCtx, Object src, String procedure)
>>>>>>>>>>    場所 Oracle.DataAccess.Client.OracleException.HandleError(Int32
>>>>>>>>>> errCode, OracleConnection conn, String procedure, IntPtr opsErrCtx,
>>>>>>>>>> OpoSqlValCtx* pOpoSqlValCtx, Object src)
>>>>>>>>>>    場所 Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery()
>>>>>>>>>>    場所 Seasar.Framework.Util.CommandUtil.ExecuteNonQuery(IDataSource
>>>>>>>>>> dataSource, IDbCommand cmd)
>>>>>>>>>>
>>>>>>>>>> [NextException]
>>>>>>>>>> Oracle.DataAccess.Client.OracleException
>>>>>>>>>> ORA-06550: 行1、列15:
>>>>>>>>>> PLS-00306: 'NAME'の呼出しで、引数の数または型が正しくありません。
>>>>>>>>>> ORA-06550: 行1、列7:
>>>>>>>>>> PL/SQL: Statement ignored
>>>>>>>>>>   ErrorCode = 6550
>>>>>>>>>>   HelpLink  =
>>>>>>>>>>
>>>>>>>>>> [Behavior]
>>>>>>>>>> CodeMstBhv.OutsideSql().Call()
>>>>>>>>>>
>>>>>>>>>> [OutsideSqlPath]
>>>>>>>>>> CODE.NAME
>>>>>>>>>>
>>>>>>>>>> [ParameterBean]
>>>>>>>>>> App.DB.ExDao.PmBean.NamePmb
>>>>>>>>>> {,1,0}
>>>>>>>>>>
>>>>>>>>>> [Statement]
>>>>>>>>>> Oracle.DataAccess.Client.OracleCommand
>>>>>>>>>> * * * * * * * * * */
>>>>>>>>>>
>>>>>>>>>> 2008/10/23 17:21 kubo <[E-MAIL ADDRESS DELETED]>:
>>>>>>>>>>> 久保(jflute)です。
>>>>>>>>>>>
>>>>>>>>>>> もし「パッケージ名.プロシージャ名」で呼び出せるのであれば、
>>>>>>>>>>> DBFluteがSql2Entityで自動生成するProcedurePmbを参考に
>>>>>>>>>>> 手動でPmbを作って、ProcedureNameにパッケージ名を付与すれば
>>>>>>>>>>> 実行はできるかもしれません。(未検証)
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> 2008/10/23 kubo <[E-MAIL ADDRESS DELETED]>:
>>>>>>>>>>>> 久保(jflute)です。
>>>>>>>>>>>>
>>>>>>>>>>>> 取り急ぎ、DBFluteでは意識して対応はしていません。
>>>>>>>>>>>>
>>>>>>>>>>>> ADO.NET(というかOracleのProvider)でどうやって、
>>>>>>>>>>>> 指定して実行できるのかがよくわかっていません。
>>>>>>>>>>>> (InternalProcedureHandlerクラスにてプロシージャを実行しています)
>>>>>>>>>>>>
>>>>>>>>>>>> 後は、パッケージ名がメタ情報として取得できるのかどうかも
>>>>>>>>>>>> わかっていません。(というかそもそもアプローチしたことがないです)
>>>>>>>>>>>>
>>>>>>>>>>>> #
>>>>>>>>>>>> # そもそもOracleでパッケージを使ったことがないので、
>>>>>>>>>>>> # 申し訳ありませんが知識不足です。。。
>>>>>>>>>>>> #
>>>>>>>>>>>>
>>>>>>>>>>>> 2008/10/23 k. moriwaki <[E-MAIL ADDRESS DELETED]>:
>>>>>>>>>>>>> 森脇と申します。
>>>>>>>>>>>>>
>>>>>>>>>>>>> 件名の通りなのですが、S2Dao.NET、DBFluteともOracleのパッケージには
>>>>>>>>>>>>> 対応されていますでしょうか?
>>>>>>>>>>>>>
>>>>>>>>>>>>> S2Dao.NET のドキュメントを確認しましたが、Procedure属性の指定が
>>>>>>>>>>>>> ・ストアプロシージャ名
>>>>>>>>>>>>> ・スキーマ名.ストアドプロシージャ名
>>>>>>>>>>>>> しか説明がありませんでしたので対応されていないのでしょうか?
>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>> seasar-dotnet mailing list
>>>>>>>>>>>>> [E-MAIL ADDRESS DELETED]
>>>>>>>>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> seasar-dotnet mailing list
>>>>>>>>>>> [E-MAIL ADDRESS DELETED]
>>>>>>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> seasar-dotnet mailing list
>>>>>>>>>> [E-MAIL ADDRESS DELETED]
>>>>>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> seasar-dotnet mailing list
>>>>>>>>> [E-MAIL ADDRESS DELETED]
>>>>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> seasar-dotnet mailing list
>>>>>>>> [E-MAIL ADDRESS DELETED]
>>>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>>>>>>
>>>>>>>
>>>>>> _______________________________________________
>>>>>> seasar-dotnet mailing list
>>>>>> [E-MAIL ADDRESS DELETED]
>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>>>>
>>>>> _______________________________________________
>>>>> seasar-dotnet mailing list
>>>>> [E-MAIL ADDRESS DELETED]
>>>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>>>
>>>>
>>>
>> _______________________________________________
>> seasar-dotnet mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>
>


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