[Seasar-user:2348] Re: ストアドプロシージャ調査のお願い
Hikaru Taniguchi
taniguchi
2005年 7月 12日 (火) 12:28:19 JST
谷口です。
At Tue, 12 Jul 2005 01:20:21 +0900,
上原 慶三 <[E-MAIL ADDRESS DELETED]> wrote:
>
> 上原です。
> >Oracle9.2(std) + J2SE1.4以降用の9.2用Thinドライバ(ojdbc14.jar) で試
> >して見ました。返り値のサポート方法ということで、Oracleの場合、
> > 1. OUTパラメータの使用(参照渡しの引数)
> > 2. CREATE FUNCTION .. RETURN ... 形式のファンクション
> >の2つの方法があり、どちらも使用されているようなので、どちらも試して
> >みました。 1. については IN パラメータと比較するために INも試しました。
>
> 調査ありがとうございます。
> 自分としては2.形式のストアドしか使ったことなかったので
> 2.形式だけサポートするつもりでしたが、1.形式のストアドもつかわれてるんで
> すね。サポートしないとまずいかな。
> あとストアドがレコードセット返すパターンもあると思うんですが実際どれぐら
> い使われているんでしょうか。
あくまでうちの会社の少ない事例では…ですが、レコードセットを返すパター
ンは使われていないようです。私の知る限り、PL/SQLで完結するような大掛か
りなサブシステム?サービス?を書くとき以外には見たことがありません。
(Javaアプリとの境界点に作っているのを見たことがない という意味です)
仕組みとしてはスマートな方法なので (TYPE Emp IS TABLE OF Employeeし
てRETURN Emp と書けば、元々のテーブル構造にコードが依存しなくていい)好
きなんですが、身辺では活用例がありません。
1.形式はよく見ます。これも設計者や各チームの流儀によるのではないかと
思います。
> とりあえず、次のバージョンでは2.の形式ぐらいしかサポートできないかもしれ
> ません。
問題ないような気がしています。
既存のストアドをJavaから呼び出すシーンで、戻り値がなんだかややこしい
ケースって実はあんまり多くないんじゃないか という気もします。
また、CREATE FUNCTION しかサポートしませんよ、といっても ヤヤコシイ
PROCEDUREをラップしたFUNCTIONを作ればいいわけで実はあまり困らないよう
な?
ちょっと個人的経験に偏りすぎて申し訳ないですがこんな感じです。
--
Hikaru Taniguchi <[E-MAIL ADDRESS DELETED]>
Seasar-user メーリングリストの案内