特定のパッケージ内の特定のOracleプロシージャのパラメータをフェッチしようとしています。常にデータは返されません。JavaでOracleパッケージプロシージャのパラメータを取得する
私たちのロジックは、パッケージに含まれていないプロシージャのパラメータをフェッチするときにうまく機能します。私はこれがうまくいくと思った。それはパッケージ名を要求するので、私は何か他のことをする必要はないと思った。私は接続していたら
我々はこれを実行します。
dbMetaData = conn.getMetaData();
rs = dbMetaData.getProcedureColumns(packageName, null, procedureName, null);
while(rs.next()){
...
}
rs.nextは常にfalseです。私は何かを欠いているに違いない?
*「getProcedureColumns(Stringカタログ、String schemaPattern、String procedureNamePattern、String columnNamePattern)」](https://docs.oracle.com/javase/8/) docs/api/java/sql/DatabaseMetaData.html#getProcedureColumns-java.lang.String-java.lang.String-java.lang.String-java.lang.String-)メソッドは*パッケージ*の名前を要求しますか? – Andreas
申し訳ありませんが、私は確かにOracleの専門家ではありません。私はoracleパッケージがカタログとして適用可能だと思った。 paramsを取得すると、SimpleJdbcCallを使用してプロシージャを実行します。 SimpleJdbcCallクラスには、 "withCatalogName"というメソッドがあります。 そのためのjava docは読み取ります:オプションとして、ストアドプロシージャを継承するカタログの名前を指定します。 Oracle DatabaseMetaDataに一貫性を持たせるために、プロシージャがパッケージの一部として宣言されている場合は、パッケージ名を指定するために使用されます。 – nmb1106