2016-03-30 6 views
-5

У меня есть требование, когда мне нужно откат хранимой процедуры на основе условия.Откат сохраненной процедуры в Java

Сначала я вызываю хранимую процедуру, а затем проверяю состояние, и если условие не работает, необходимо выполнить откат. Ниже приведен код, который я попробовал.

public static void main(String[] args) { 
    Student student=new Student(); 

    student.setName("AAAA"); 
    student.setAge("20"); 
    student.setDob("14/08/1988"); 
    student.setPhone("98841"); 
    student.setSslc("1111"); 
    student.setHsc("222"); 
    student.setCollege("333"); 
    System.out.println(student); 
    try { 
     Connection conn=ConnectDB.getConnection(); 
     conn.setAutoCommit(false); 

     CallableStatement callableStatement = null; 
     String proc = "{call STUDENT_OP(?,?,?,?,?,?,?,?)}"; 
     callableStatement = conn.prepareCall(proc); 
     Savepoint savepoint1 = conn.setSavepoint("ROLLBACK_SP"); 

     int age=Integer.parseInt(student.getAge()); 

     callableStatement.setString(1, student.getName()); 
     callableStatement.setInt(2, age); 
     callableStatement.setString(3, student.getDob()); 
     callableStatement.setString(4, student.getPhone()); 
     callableStatement.setString(5, student.getSslc()); 
     callableStatement.setString(6, student.getHsc()); 
     callableStatement.setString(7, student.getCollege()); 
     callableStatement.registerOutParameter(8, java.sql.Types.NUMERIC); 

     callableStatement.executeUpdate(); 

     int returnCode=callableStatement.getInt(8); 
     getStudents(); 

     if(SOME CONDITION){ 
      conn.rollback(savepoint1); 
     } 
     getStudents(); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
} 

В приведенной выше коде, getStudents() метода печатает список имени в студенческой таблицы. Запустите этот метод getStudents() перед откатом и после откат. Я установил Savepoint как Savepoint savepoint1 = conn.setSavepoint ("ROLLBACK_SP");, и я вернусь назад, используя эту точку сохранения.

Но отката не происходит. Я что-то упускаю? пожалуйста помоги.

ответ

Смежные вопросы