Meine Orakel-Prozedur ist wie folgt, die verwendet wird, um die alten Benutzer aus der DB zu entfernen.So rufen Sie eine Oracle-Prozedur auf, die Daten mit JDBC löscht
create or replace
PROCEDURE UNAVAILABLE_USER (INACTIVE IN NUMBER DEFAULT 90) IS CHK_ACTIVE_USER (NUMOFDAYS IN NUMBER DEFAULT 90) IS
//VARIABLE DECLARATIONS
BEGIN
LOOP
//SOME LOGIC TO FIND WHICH USER ACCOUNTS TO BE DELETED
END LOOP;
LOOP
DELETE FROM SCHEEMA.TABLE1 WHERE userid = ''id'';
DELETE FROM SCHEEMA.TABLE2 WHERE userid = ''id'';
END LOOP;
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
END UNAVAILABLE_USER;
Soweit Orakel-Verfahren betroffen ist funktioniert es gut und Löschen von Daten beim Einchecken in SQL-Entwickler. Ich brauche, dass DAO Schicht aus Java auszuführen .. i wie unten um die Prozedur auszuführen versucht haben ..
connection = UserProfileDAO.getJDBCConnection();
CallableStatement statement = null;
String query = "CALL " + USER_SCHEMA + ".UNAVAILABLE_USER(?)";
statement = connection.prepareCall(query);
statement.setInt(1, Num_Off_Days);
statement.executeUpdate();
Es ist die Bereitstellung und läuft gut, kein Problem von Java-Seite, sondern die Daten von db Seite löschen
09: 54: 37.761 INFO [com.alok.user.data.UserProfileDAO] (Pool-11-thread-1) innerhalb des delete user 09: 55: 04.250 INFO [stdout] (Pool-11 -thread-1) ANRUF USER_SCHEMA.UNAVAILABLE_USER (?)
Könnten Sie mir helfen, das Problem zu diagnostizieren und wie dies mit DB in Verbindung stand? Jede andere Lösung wäre nennenswert. Vielen Dank im Voraus.
Ist die Verbindung in autoCommit Modus geht? Wenn nein, muss Ihr Code nach dem Löschen einen Commit durchführen: 'connection.commit()'; Fügen Sie diese Zeile am Ende an, sie funktioniert unabhängig von einem Autocommit-Status. – krokodilko
Ja .. es ist in Auto-Commit-Modus –
Ich habe auch versucht, die Auto-Commit-Modus als falsch vor der Transaktion .. das funktioniert auch nicht .. –