Using named parameter markers with CallableStatement objects
You can use named parameter markers instead of standard parameter markers in CallableStatement objects to assign values to IN or INOUT parameters and to register OUT parameters.
Before you begin
DB2BaseDataSource.YES
.About this task
Procedure
To use named parameter markers with CallableStatement objects, follow these steps:
Example
The following code illustrates calling a stored procedure that has one input VARCHAR parameter and one output INTEGER parameter, which are represented by named parameter markers. The numbers to the right of selected statements correspond to the previously described steps.
…
CallableStatement cstmt =
con.prepareCall("CALL MYSP(:inparm,:outparm)");
// Create a CallableStatement object 1
((com.ibm.db2.jcc.DB2CallableStatement)cstmt).
registerJccOutParameterAtName("outparm", java.sql.Types.INTEGER);
// Register OUT parameter data type 3
((com.ibm.db2.jcc.DB2CallableStatement)cstmt).setJccStringAtName("inparm", "4567");
// Assign a value to inparm parameter 4
cstmt.executeUpdate(); // Call the stored procedure 5
int outssid = cstmt.getInt(2); // Get the output parameter value 6
cstmt.close();
The following code illustrates the use of named parameter markers in a PL/SQL block. The numbers to the right of selected statements correspond to the previously described steps.
…
// Read in a PL/SQL block, and assign it to String variable plsql
CallableStatement cstmt = con.prepareCall(plsql);
// Create a CallableStatement object 1
DB2ParameterMetaData pm =
(DB2ParameterMetaData)cs.getParameterMetaData();
// Get ParameterMetaData, cast it to 2a,2b
// DB2ParameterMetaData
String[] markers = pm.getParameterMarkerNames();
// Get parameter marker names 2c
// Process ParameterMetaData. Assume that the first parameter marker
// is the only OUT parameter, and it has an INTEGER data type.
…
String parameterName = markers[0]; // Get OUT parameter name
((com.ibm.db2.jcc.DB2CallableStatement)cstmt).
registerJccOutParameterAtName(parameterName, java.sql.Types.INTEGER);
// Register OUT parameter data type 3
// Assign a values to input parameters 4
…
cstmt.executeUpdate(); // Call the stored procedure 5
int outval = cs.getJccIntAtName(parameterName);
// Get the output parameter value using the parameter name 6
cstmt.close();