0

シンプルな Oracle カーソル取得手順を JDBC で動作させようとして、いくつかのフラストレーションを経験してきました。

「[Oracle][ODBC][Ora]ORA-06553: PLS-306: 'GETNAME' の呼び出しで引数の数またはタイプが間違っています」というエラーが表示され続けますが、何が間違っているのかわかりません。

Javaでの私のコードは次のとおりです。

CallableStatement stmt = connection.prepareCall("call getName(?)");
stmt.registerOutParameter(1, OracleTypes.CURSOR);
stmt.execute();

stmt.close();
con.close();

Oracleでの私の手順は次のとおりです。

CREATE OR REPLACE PROCEDURE getName(cur out SYS_REFCURSOR)
IS
BEGIN
    OPEN cur FOR
        SELECT name FROM customer;
END;

でエラーが発生しstmt.execute()ます。

前もって感謝します。

ところで、私は Oracle 10.2.0 で作業しています。

4

2 に答える 2

2

私は本質的に同じことを試しましたが、うまくいきました。唯一の違いは、私が使用している Oracle JDBC ライブラリにはメソッドがないことregisterOutputParameterです。代わりに使いregisterOutParameterました。おそらく、Oracle 型をサポートする Oracle 固有のメソッドではなく、汎用の JDBC メソッドを呼び出しています。

私が考えることができる他の唯一の説明は、Java コードが間違ったスキーマに接続しており、別のgetNameオブジェクトにアクセスしているということです。

于 2010-05-26T19:14:01.537 に答える
0

いいえ、これは間違っています。生のカーソルを返すべきではありません。ストアド プロシージャを呼び出して、ResultSet を反復処理する必要があります。

于 2010-05-26T19:07:20.317 に答える