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