1 21 22 package org.apache.derbyTesting.functionTests.tests.lang; 23 import java.sql.*; 24 25 import org.apache.derby.tools.ij; 26 import java.io.PrintStream ; 27 import java.math.BigInteger ; 28 import java.math.BigDecimal ; 29 30 import org.apache.derbyTesting.functionTests.tests.jdbcapi.parameterMetaDataJdbc30; 31 import org.apache.derbyTesting.functionTests.util.TestUtil; 32 public class procedureJdbc30 33 { 34 35 static private boolean isDerbyNet = false; 36 static private String [] testObjects = { "TABLE MRS.FIVERS", "PROCEDURE MRS.FIVEJP"}; 37 38 public static void main (String [] argv) throws Throwable 39 { 40 ij.getPropertyArg(argv); 41 Connection conn = ij.startJBMS(); 42 isDerbyNet = TestUtil.isNetFramework(); 43 44 runTests( conn); 45 } 46 47 public static void runTests( Connection conn) throws Throwable 48 { 49 try { 50 testMoreResults(conn); 51 } catch (SQLException sqle) { 52 org.apache.derby.tools.JDBCDisplayUtil.ShowSQLException(System.out, sqle); 53 sqle.printStackTrace(System.out); 54 } 55 56 } 57 58 private static void testMoreResults(Connection conn) throws SQLException { 59 60 Statement s = conn.createStatement(); 61 TestUtil.cleanUpTest(s, testObjects); 62 63 s.executeUpdate("create table MRS.FIVERS(i integer)"); 64 PreparedStatement ps = conn.prepareStatement("insert into MRS.FIVERS values (?)"); 65 for (int i = 1; i <= 20; i++) { 66 ps.setInt(1, i); 67 ps.executeUpdate(); 68 } 69 ps.close(); 70 71 73 s.executeUpdate("create procedure MRS.FIVEJP() parameter style JAVA READS SQL DATA dynamic result sets 5 language java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.fivejp'"); 74 75 76 CallableStatement cs = conn.prepareCall("CALL MRS.FIVEJP()"); 77 ResultSet[] allRS = new ResultSet[5]; 78 79 82 83 84 85 System.out.println("\n\nFetching result sets with getMoreResults()"); 86 int pass = 0; 87 cs.execute(); 88 do { 89 90 allRS[pass++] = cs.getResultSet(); 91 System.out.println(" PASS " + pass + " got result set " + (allRS[pass -1] != null)); 92 showResultSetStatus(allRS); 94 95 } while (cs.getMoreResults()); 96 showResultSetStatus(allRS); 98 java.util.Arrays.fill(allRS, null); 99 100 System.out.println("\n\nFetching result sets with getMoreResults(Statement.CLOSE_CURRENT_RESULT)"); 101 pass = 0; 102 cs.execute(); 103 do { 104 105 allRS[pass++] = cs.getResultSet(); 106 System.out.println(" PASS " + pass + " got result set " + (allRS[pass -1] != null)); 107 showResultSetStatus(allRS); 109 110 } while (cs.getMoreResults(Statement.CLOSE_CURRENT_RESULT)); 111 showResultSetStatus(allRS); 113 java.util.Arrays.fill(allRS, null); 114 115 System.out.println("\n\nFetching result sets with getMoreResults(Statement.CLOSE_ALL_RESULTS)"); 116 pass = 0; 117 cs.execute(); 118 do { 119 120 allRS[pass++] = cs.getResultSet(); 121 System.out.println(" PASS " + pass + " got result set " + (allRS[pass -1] != null)); 122 showResultSetStatus(allRS); 124 125 } while (cs.getMoreResults(Statement.CLOSE_ALL_RESULTS)); 126 showResultSetStatus(allRS); 128 java.util.Arrays.fill(allRS, null); 129 130 System.out.println("\n\nFetching result sets with getMoreResults(Statement.KEEP_CURRENT_RESULT)"); 131 pass = 0; 132 cs.execute(); 133 do { 134 135 allRS[pass++] = cs.getResultSet(); 136 System.out.println(" PASS " + pass + " got result set " + (allRS[pass -1] != null)); 137 showResultSetStatus(allRS); 139 140 } while (cs.getMoreResults(Statement.KEEP_CURRENT_RESULT)); 141 showResultSetStatus(allRS); 143 for (int i = 0; i < allRS.length; i++) { 145 allRS[i].close(); 146 } 147 java.util.Arrays.fill(allRS, null); 148 149 System.out.println("\n\nFetching result sets with getMoreResults(<mixture>)"); 150 cs.execute(); 151 152 System.out.println(" first two with KEEP_CURRENT_RESULT"); 153 allRS[0] = cs.getResultSet(); 154 boolean moreRS = cs.getMoreResults(Statement.KEEP_CURRENT_RESULT); 155 if (!moreRS) 156 System.out.println("FAIL - no second result set"); 157 allRS[1] = cs.getResultSet(); 158 showResultSetStatus(allRS); 160 161 System.out.println(" third with CLOSE_CURRENT_RESULT"); 162 moreRS = cs.getMoreResults(Statement.CLOSE_CURRENT_RESULT); 163 if (!moreRS) 164 System.out.println("FAIL - no third result set"); 165 allRS[2] = cs.getResultSet(); 166 showResultSetStatus(allRS); 168 169 170 System.out.println(" fourth with KEEP_CURRENT_RESULT"); 171 moreRS = cs.getMoreResults(Statement.KEEP_CURRENT_RESULT); 172 if (!moreRS) 173 System.out.println("FAIL - no fourth result set"); 174 allRS[3] = cs.getResultSet(); 175 showResultSetStatus(allRS); 177 178 System.out.println(" fifth with CLOSE_ALL_RESULTS"); 179 moreRS = cs.getMoreResults(Statement.CLOSE_ALL_RESULTS); 180 if (!moreRS) 181 System.out.println("FAIL - no fifth result set"); 182 allRS[4] = cs.getResultSet(); 183 showResultSetStatus(allRS); 185 186 System.out.println(" no more results with with KEEP_CURRENT_RESULT"); 187 moreRS = cs.getMoreResults(Statement.KEEP_CURRENT_RESULT); 188 if (moreRS) 189 System.out.println("FAIL - too many result sets"); 190 showResultSetStatus(allRS); 192 allRS[4].close(); 193 java.util.Arrays.fill(allRS, null); 194 195 System.out.println("\n\nFetching result sets with getMoreResults(Statement.KEEP_CURRENT_RESULT) and checking that cs.execute() closes them"); 196 pass = 0; 197 cs.execute(); 198 do { 199 200 allRS[pass++] = cs.getResultSet(); 201 System.out.println(" PASS " + pass + " got result set " + (allRS[pass -1] != null)); 202 showResultSetStatus(allRS); 204 205 } while (cs.getMoreResults(Statement.KEEP_CURRENT_RESULT)); 206 System.out.println(" fetched all results"); 207 showResultSetStatus(allRS); 209 System.out.println(" executing statement"); 210 cs.execute(); 211 showResultSetStatus(allRS); 213 java.util.Arrays.fill(allRS, null); 214 215 216 System.out.println("\n\nFetching result sets with getMoreResults(Statement.KEEP_CURRENT_RESULT) and checking that cs.close() closes them"); 217 pass = 0; 218 do { 220 221 allRS[pass++] = cs.getResultSet(); 222 System.out.println(" PASS " + pass + " got result set " + (allRS[pass -1] != null)); 223 showResultSetStatus(allRS); 225 226 } while (cs.getMoreResults(Statement.KEEP_CURRENT_RESULT)); 227 System.out.println(" fetched all results"); 228 showResultSetStatus(allRS); 230 System.out.println(" closing statement"); 231 cs.close(); 232 showResultSetStatus(allRS); 234 java.util.Arrays.fill(allRS, null); 235 236 } 237 238 private static void showResultSetStatus(ResultSet[] allRS) { 239 for (int i = 0; i < allRS.length; i++) { 240 try { 241 ResultSet rs = allRS[i]; 242 if (rs == null) 243 continue; 244 rs.next(); 245 System.out.println(" RS (" + (i + 1) + ") val " + rs.getInt(1)); 246 } catch (SQLException sqle) { 247 System.out.println(" Exception - " + sqle.getMessage()); 248 } 249 } 250 } 251 } 252 | Popular Tags |