Retrieving data from cursor output parameters in JDBC applications
Db2® on Linux®, UNIX, and Windows systems stored procedures can have OUT parameters of the cursor type. To retrieve data from those parameters in JDBC applications, you use ResultSet objects.
Procedure
To retrieve data from cursor variables, follow these steps:
Example
CREATE TYPE myRowType AS ROW (name VARCHAR(128))
CREATE TYPE myCursorType AS myRowType CURSOR
CREATE PROCEDURE MYPROC(IN pempNo VARCHAR(6), OUT pcv1 myCursorType)
RESULT SETS 0
LANGUAGE SQL
BEGIN
DECLARE c1 CURSOR WITH RETURN FOR
SELECT empno FROM EMPLOYEE;
OPEN c1;
SET pcv1 = CURSOR FOR SELECT name FROM employee WHERE empNo = pempNo;
OPEN pcv1;
END
The following code calls stored procedure MYPROC
and uses a ResultSet object to retrieve data from
cursor pcv1. The numbers to the right of selected statements correspond
to the previously-described steps.Connection con;
ResultSet rs = null; // Output parameter 1
…
CallableStatement cstmt = conn.prepareCall("CALL MYPROC(?, ?)"); 2
String hvEmpNo="000500";
cstmt.setString (1, hvEmpNo);
cstmt.registerOutParameter (2, DB2Types.CURSOR); 3
cstmt.executeUpdate(); // Call the stored procedure 4
String hvEmpName = null;
rs = (java.sql.ResultSet)cstmt.getObject(2); 5
while (rs.next()) { // Retrieve result set rows 6
hvEmpName=rs.getString(1);
System.out.println("Employee name for " + hvEmpNo
+ ": " + hvEmpName);
}
rs.close(); // Close the ResultSet 7