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