最近、以下のような postgresql の関数を作成しました。
CREATE OR REPLACE FUNCTION POSTPRC(A IN NUMERIC)
**RETURNS VOID**
AS
$$
BEGIN
... ...
END;
$$ LANGUAGE PLPGSQL;
Javaを使用して呼び出すにはどうすればよいですか。以下のようなコードを使用しました。
CallableStatement upperProc = con.prepareCall("{ ? = call POSTPRC( ? ) }");
upperProc.registerOutParameter(1, Types.NULL);
upperProc.setInt(2,23);
int flag=upperProc.executeUpdate();
しかし、毎回エラーが発生します。どうすればこの問題を解決できますか?
例外は次のように表示されます: java.lang.ArrayIndexOutOfBoundsException: 2.
対応するパラメータを持つプロシージャ POSTPRC は、pgAdminIII ツールで正常に実行できます。
postgresql はステートメント likes-{? を使用する必要があります。= call procedure(?,?,?)} であり、これが Java を介して呼び出す唯一の方法です。{call procedure(?,?,?)} などのステートメントをテストしました。毎回失敗しました。実際には、postgresql のプロシージャは関数です。postgresql のプロシージャを呼び出したい場合は、パラメータまたは戻り値なしで postgresql のプロシージャを定義した方がよいでしょう....
どんなコメントでも大歓迎です!
ありがとう