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

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


久保さん
森脇です

遅くなってすいません、試してみました。
結果、一部成功一部エラーとなりました。

プロシージャ、パッケージのプロシージャは実行できましたが、、
ファンクション、パッケージのファンクションはエラーになりました。

dbflute-noracle-exampleにはファンクションのサンプルが無いみたいですが、
プロシージャと同様な書き方で問題ないでしょうか?
また実行環境のせいかも知れませんので、こちらでも再度試してみますが
取り急ぎご報告までに。


2008/10/23 20:38 kubo <[E-MAIL ADDRESS DELETED]>:
> 久保(jflute)です。
>
> 簡単ではありますが、パッケージ付きプロシージャを作って、
> dbflute-oracle-example並びにdbflute-noracle-exampleで試しました。
> 結論から言うと、実行できました。
>
> 引数もINとOUTとINOUT3つ存在するプロシージャを作って、
> OUTで値を受け取りれることも確認しています。
>
> ということで、以前のDBFluteから比べると
> ProcedurePmbのProcedureNameにパッケージ名を
> 付与することで実行ができるようになったということになります。
>
> ということで、
>
> dbflute-noracle-exampleで確認しているプロシージャを
> そちらの環境で一時的に作成して試して頂けないでしょうか?
> 結果次第で大分切り分けができるかと思います。
> 来週ご確認お願いします。
>
> #
> # とりあえず、Exampleで想定どおりできているので、
> # 予定通り今週リリースします。
> # 来週新たな事象が見つければその次のバージョンで
> # 対応するようにします。
> #
>
> 2008/10/23 kubo <[E-MAIL ADDRESS DELETED]>:
>> 久保(jflute)です。
>>
>>> ちなみにPmbは作られていました。
>>> 以下のようなパッケージ構成だった場合、CodePmbが作成され
>>> returnのフィールドが3つ作成されるといった具合になってました。
>>
>> ありがとうございます。この情報がとてもありがたいです。
>> そして、こちらでもほぼリアルタイムで試してて、
>> 同一スキーマのパッケージのプロシージャであれば、
>> メタ情報が取得できました。
>> 同じところまで再現できれば検証はできるので、
>> 確認してみますね。
>> (同じエラーであれば、やはりADO.NETの使い方だし、
>>  正常に動作できればPL/SQLの文法かもだし)
>>
>> # 途中経過は随時メール出します。
>>
>> 2008/10/23 k. moriwaki <[E-MAIL ADDRESS DELETED]>:
>>> 森脇です
>>>
>>>> 該当のPL/SQLは、SQL*Plus等から実行可能ですか?
>>> すいません、これは試していませんでした。
>>> 明日…と言いたいところですが試せるのは月曜以降になりそうです。
>>>
>>>> また、手動で作成したPmbのパラメータの定義(数とか)は
>>>> 合っていますでしょうか?
>>> dbflute-noracle-exampleを参考にして、自動生成されたソースを修正したので
>>> 合っているとおもいます。
>>>
>>>
>>> 以下余談です。
>>>
>>> ちなみにPmbは作られていました。
>>> 以下のようなパッケージ構成だった場合、CodePmbが作成され
>>> returnのフィールドが3つ作成されるといった具合になってました。
>>>
>>> package Pref
>>>   function Code
>>>   function Name
>>>
>>> package City
>>>   function Code
>>>   function Name
>>>
>>> package Town
>>>   function Code
>>>   function Name
>>>
>>> ----- BsCodePmb.cs -----
>>> (略)
>>>        // ===============================================================================
>>>        //
>>>         Definition
>>>        //
>>>         ==========
>>>        // -------------------------------------------------
>>>        //                               Procedure Parameter
>>>        //                               -------------------
>>>         public static readonly String arg1_PROCEDURE_PARAMETER =
>>> "arg1, return";
>>>         public static readonly String arg2_PROCEDURE_PARAMETER =
>>> "arg2, return";
>>>         public static readonly String arg3_PROCEDURE_PARAMETER =
>>> "arg3, return";
>>> (略)
>>>
>>> 2008/10/23 19:15 kubo <[E-MAIL ADDRESS DELETED]>:
>>>> 久保(jflute)です。
>>>>
>>>>> [ESSR0071]SQLで例外が発生しました。理由はOracle.DataAccess.Client.OracleException
>>>>> ORA-06550: 行1、列15:
>>>>> PLS-00306: 'NAME'の呼出しで、引数の数または型が正しくありません。
>>>>> ORA-06550: 行1、列7:
>>>>
>>>> PL/SQLまでは到達してるような気もします。
>>>>
>>>> 該当のPL/SQLは、SQL*Plus等から実行可能ですか?
>>>> また、手動で作成したPmbのパラメータの定義(数とか)は
>>>> 合っていますでしょうか?
>>>>
>>>> #
>>>> # ちなみにパッケージ付きプロシージャのメタ情報自体が
>>>> # 取得できてない(Pmbが作られない)のであれば、
>>>> # パッケージ名を付与する以前の問題でしたね。。。
>>>> #
>>>>
>>>> 2008/10/23 kubo <[E-MAIL ADDRESS DELETED]>:
>>>>> 久保(jflute)です。
>>>>>
>>>>> 森脇さん、
>>>>> すいませんエラーはちょっと後で見させて頂きます。
>>>>> (S2Dao.NETのプロシージャ作者の投稿を待つしか.....)
>>>>>
>>>>> ちょっと仕様の相談です。
>>>>>
>>>>> ご教授頂いた方法でプロシージャのパッケージを取得するようにしました。
>>>>> メタ情報からパッケージ名が取得できたら、
>>>>> SQL上のプロシージャ名を「パッケージ名.プロシージャ名」に
>>>>> した方がよいでしょうか?(Java/C#両方)
>>>>> (よくわからないならわからないでOKです)
>>>>>
>>>>> #
>>>>> # Oracle限定にするかは要検討。。。
>>>>> #
>>>>>
>>>>> 2008/10/23 k. moriwaki <[E-MAIL ADDRESS DELETED]>:
>>>>>> 森脇です
>>>>>>
>>>>>>> もし「パッケージ名.プロシージャ名」で呼び出せるのであれば、
>>>>>>> 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 メーリングリストの案内