2

私は、いくつかの複雑なロジックを使用して JDBC CallableStatement で IN パラメーターと OUT パラメーターをバインドするレガシー コードを使用しています。このコードは、IN および OUT パラメーターの正しい型をバインドしているように見えますが、CallableStatement が実行されると、Oracle ストアド プロシージャは次の例外をスローします。

ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'STORED_PROC_ABC'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

line 1, column7:」は役に立ちません。ストアド プロシージャ内の何も指していません。

ストアド プロシージャを呼び出す単純なスタンドアロン テスト ケースを作成しました。従来のコードと同じパラメーターとバインディング タイプを使用すると、成功します。

必要なのは、従来のコードとスタンドアロン テストの 2 つの CallableStatement オブジェクトを比較して、違いを確認する方法です。

関連するパラメーター バインディング情報 (値と型) を CallableStatement から取得する方法はありますか? これを行うサードパーティのライブラリがあれば、それは素晴らしいことですが、そうでない場合は、さまざまなバインディングを掘り下げる方法が必要になります。

ありがとう。

4

2 に答える 2

4

CallableStatement.getParameterMetaData() http://download.oracle.com/javase/1.4.2/docs/api/java/sql/ParameterMetaData.htmlを使用できます。

于 2011-07-12T21:48:44.913 に答える
0

JDBC CallableStatement オブジェクトは、データベース サーバー内のストアド プロシージャへの呼び出しを表すように設計されています。

を使用しjava.sql Interface ParameterMetaDataます。

PreparedStatement オブジェクトのパラメーターの型とプロパティに関する情報を取得するために使用できるオブジェクト。

于 2011-07-12T21:50:38.763 に答える