ストアド プロシージャの最初のパラメーターは INOUT パラメーターであるため、CallableStatement オブジェクトを使用し、最初のパラメーターを出力パラメーターとして登録し、最初のパラメーターの値を設定する必要があります。
JTOpen には、リフレクションを使用して Java メソッドを呼び出す JDBC クライアントがあります。最初のパラメーターが inout パラメーターであるストアド プロシージャを呼び出す例を次に示します。(注: プログラムは、呼び出すメソッドを推測しようとするため、多くのノイズを生成します。1 つのメソッドが失敗すると、別のメソッドが試行されます。また、registerOutParameter 呼び出しの 12 は、実際には java.sql.Type.VARCHAR です)。
~> java -cp jt400.jar com.ibm.as400.access.jdbcClient.Main jdbc:as400:SYSTENAME USERID PASSWORD
>CREATE PROCEDURE MYCONCAT(INOUT P1 VARCHAR(512) , P2 VARCHAR(80), P3 VARCHAR(80), P4 VARCHAR(80)) LANGUAGE SQL BEGIN SET P1 = P1 || P2 || P3 || P4; END
>!SETVAR CSTMT=CON.prepareCall("CALL MYCONCAT(?,'B','C','D')")
CSTMT=STMT0002
...
>!CALLMETHOD CSTMT.registerOutParameter(1,12)
...
>!CALLMETHOD CSTMT.setString(1,'A')
...
>!CALLMETHOD CSTMT.execute()
...
Call returned false
>!CALLMETHOD CSTMT.getString(1)
Call returned ABCD