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

Hiroaki Fujii [E-MAIL ADDRESS DELETED]
2008年 10月 27日 (月) 02:19:29 JST


コミッタの藤井です。

ご返事が遅くなり、申し訳ありません。

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