[Seasar-user:2345] Re: ストアドプロシージャ調査のお願い
Hikaru Taniguchi
taniguchi
2005年 7月 11日 (月) 17:53:03 JST
谷口です。
At Sat, 9 Jul 2005 05:51:53 +0900,
上原慶三 <[E-MAIL ADDRESS DELETED]> wrote:
>
> 上原です。
> S2Daoにストアドプロシージャのサポートを追加しようと思っているのですが、
> ストアドプロシージャの返り値を取得する方法が必要です。
> DatabaseMetaDataのgetProcedureColumnsメソッドを利用すれば取れるはずなのですが、
> サポートしていないDBMSもあるらしいので、どれぐらいのDBMSがサポートしているか
> 調査したいのですが、協力してもらえないでしょうか。
>
> 調査用のプログラムを添付します。
> instrは適当なストアドプロシージャ名に変えてください。
(以下略)
Oracle9.2(std) + J2SE1.4以降用の9.2用Thinドライバ(ojdbc14.jar) で試
して見ました。返り値のサポート方法ということで、Oracleの場合、
1. OUTパラメータの使用(参照渡しの引数)
2. CREATE FUNCTION .. RETURN ... 形式のファンクション
の2つの方法があり、どちらも使用されているようなので、どちらも試して
みました。 1. については IN パラメータと比較するために INも試しました。
かなり長くなってしまい申し訳ないですが、以下そのまま貼り付けちゃいま
す。
# 追加調査が必要であれば Oracle9.2環境であれば可能ですのでなんなりと。
------------ 8< -------------
引数1つ目が IN VARCHAR2 のとき
ColumnName=PROCEDURE_CAT null
ColumnName=PROCEDURE_SCHEM <<スキーマ名>>
ColumnName=PROCEDURE_NAME TEST2
ColumnName=COLUMN_NAME VAR1
ColumnName=COLUMN_TYPE 1
ColumnName=DATA_TYPE 12
ColumnName=TYPE_NAME VARCHAR2
ColumnName=PRECISION null
ColumnName=LENGTH null
ColumnName=SCALE null
ColumnName=RADIX 10
ColumnName=NULLABLE 1
ColumnName=REMARKS null
ColumnName=SEQUENCE 1
ColumnName=OVERLOAD null
ColumnName=DEFAULT_VALUE null
引数1つ目が OUT VARCHAR2 のとき
ColumnName=PROCEDURE_CAT null
ColumnName=PROCEDURE_SCHEM <<スキーマ名>>
ColumnName=PROCEDURE_NAME TEST2
ColumnName=COLUMN_NAME VAR1
ColumnName=COLUMN_TYPE 4
ColumnName=DATA_TYPE 12
ColumnName=TYPE_NAME VARCHAR2
ColumnName=PRECISION null
ColumnName=LENGTH null
ColumnName=SCALE null
ColumnName=RADIX 10
ColumnName=NULLABLE 1
ColumnName=REMARKS null
ColumnName=SEQUENCE 1
ColumnName=OVERLOAD null
ColumnName=DEFAULT_VALUE null
CREATE FUNCTION TEST3 (var1 IN INTEGER) RETURN VARCHAR2 で宣言したファンクションに対して…
ColumnName=PROCEDURE_CAT null
ColumnName=PROCEDURE_SCHEM <<スキーマ名>>
ColumnName=PROCEDURE_NAME TEST3
ColumnName=COLUMN_NAME null
ColumnName=COLUMN_TYPE 5
ColumnName=DATA_TYPE 12
ColumnName=TYPE_NAME VARCHAR2
ColumnName=PRECISION null
ColumnName=LENGTH null
ColumnName=SCALE null
ColumnName=RADIX 10
ColumnName=NULLABLE 1
ColumnName=REMARKS null
ColumnName=SEQUENCE 1
ColumnName=OVERLOAD null
ColumnName=DEFAULT_VALUE null
--
Hikaru Taniguchi <[E-MAIL ADDRESS DELETED]>
Seasar-user メーリングリストの案内