This is an example of how to remove values from a table through another statement's cursor.
import java.sql.*; public class UsingPositionedDelete { public Connection connection = null; public static void main(java.lang.String[] args) { UsingPositionedDelete test = new UsingPositionedDelete(); test.setup(); test.displayTable(); test.run(); test.displayTable(); test.cleanup(); } /** Handle all the required setup work. **/ public void setup() { try { // Register the JDBC driver. Class.forName("com.ibm.db2.jdbc.app.DB2Driver"); connection = DriverManager.getConnection("jdbc:db2:*local"); Statement s = connection.createStatement(); try { s.executeUpdate("DROP TABLE CUJOSQL.WHERECUREX"); } catch (SQLException e) { // Ignore problems here. } s.executeUpdate("CREATE TABLE CUJOSQL.WHERECUREX ( " + "COL_IND INT, COL_VALUE CHAR(20)) "); for (int i = 1; i <= 10; i++) { s.executeUpdate("INSERT INTO CUJOSQL.WHERECUREX VALUES(" + i + ", 'FIRST')"); } s.close(); } catch (Exception e) { System.out.println("Caught exception: " + e.getMessage()); e.printStackTrace(); } } /** In this section, all the code to perform the testing should be added. If only one connection to the database is needed, the global variable 'connection' can be used. **/ public void run() { try { Statement stmt1 = connection.createStatement(); // Update each value using next(). stmt1.setCursorName("CUJO"); ResultSet rs = stmt1.executeQuery ("SELECT * FROM CUJOSQL.WHERECUREX " + "FOR UPDATE OF COL_VALUE"); System.out.println("Cursor name is " + rs.getCursorName()); PreparedStatement stmt2 = connection.prepareStatement ("DELETE FROM " + " CUJOSQL.WHERECUREX WHERE CURRENT OF " + rs.getCursorName ()); // Loop through the ResultSet and update every other entry. while (rs.next ()) { if (rs.next()) stmt2.execute (); } // Clean up the resources after they have been used. rs.close (); stmt2.close (); } catch (Exception e) { System.out.println("Caught exception: "); e.printStackTrace(); } } /** In this section, put all clean-up work for testing. **/ public void cleanup() { try { // Close the global connection opened in setup(). connection.close(); } catch (Exception e) { System.out.println("Caught exception: "); e.printStackTrace(); } } /** Display the contents of the table. **/ public void displayTable() { try { Statement s = connection.createStatement(); ResultSet rs = s.executeQuery ("SELECT * FROM CUJOSQL.WHERECUREX"); while (rs.next ()) { System.out.println("Index " + rs.getInt(1) + " value " + rs.getString(2)); } rs.close (); s.close(); System.out.println("-----------------------------------------"); } catch (Exception e) { System.out.println("Caught exception: "); e.printStackTrace(); } } }