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

k.moriwaki [E-MAIL ADDRESS DELETED]
2008年 10月 29日 (水) 23:54:58 JST


森脇です

> 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 メーリングリストの案内