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

kubo [E-MAIL ADDRESS DELETED]
2008年 10月 29日 (水) 22:07:59 JST


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