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

kubo [E-MAIL ADDRESS DELETED]
2008年 10月 29日 (水) 21:47:00 JST


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