Bonjour à tous,
J'en appelle à votre aide car j'ai un soucis que je n'arrive pas à résoudre...

J'ai une procédure stockée à laquelle je fais appel pour enregistrer des données, seulement elle ne se passe rien dans la base...
Je ne comprends vraiment pas pourquoi, sachant que la procédure enregistre parfaitement sous SQL Developper, mais pas quand j'en fais appel avec Java.

Voici ma procédure stockée:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
create or replace PROCEDURE         "PRC_EMPRUNT" ( v_id IN String, v_idex IN String )
AS
  COTISECHU EXCEPTION; 
  nouvelledate DATE; 
BEGIN
  SAVEPOINT CREATION_ANNULATION; 
 
  INSERT INTO EMPRUNT (idemprunt,idretour,idemprunteur,dateemprunt,dateeretourprevis) 
  VALUES (EMPRUNT_idemprunt.nextval,RETOUR_idretour.nextval,v_id,sysdate,+sysdate + 15); 
 
  INSERT INTO RETOUR (idretour,idemprunt,nbjourretour,dateretoureffectif) 
  VALUES ( RETOUR_idretour.CURRVAL,EMPRUNT_idemprunt.CURRVAL,15,NULL); 
 
  UPDATE EXEMPLAIRE SET idemprunt = EMPRUNT_idemprunt.CURRVAL 
  WHERE idex = 
  (SELECT idex FROM EXEMPLAIRE E 
  JOIN OUVRAGE O 
  ON e.idouvrage=o.idouvrage 
  WHERE e.idex like  v_idex );
 
  SELECT datecotisemprunteur+365 days INTO nouvelledate FROM EMPRUNTEUR 
  WHERE idemprunteur = v_id; 
 
  IF nouvelledate < sysdate THEN 
    RAISE COTISECHU; 
  END IF; 
  --v_msg := 'youhou7';
 
EXCEPTION
  WHEN cotisechu THEN 
   ROLLBACK TO SAVEPOINT CREATION_ANNULATION; 
   RAISE_APPLICATION_ERROR (-20001,'Insertion impossible, le terme de la cotisation est échu'); 
 
END;
L'appel de ma méthode:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class validerEmpruntListener implements ActionListener
	{
		public void actionPerformed ( ActionEvent eokEmprunt)
		{
			if (eokEmprunt.getSource () == valider) validerEmprunt_click();
		}
 
		private void validerEmprunt_click()
		{
			x = chisbnissnLivre.getText();
			vID = chidemprunteur.getText();
			methode.validerEmprunt(x, vID);
		}
	}
et enfin la définition de ma méthode:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public static void validerEmprunt (String x, String vID) 
	{
		Connection con = null;
 
		try 
		{ 			
			Class.forName ("oracle.jdbc.driver.OracleDriver");					//	Chargement de la classe du pilote
		}
		catch (ClassNotFoundException e)
		{
			System.out.println ("driver non chargé!");
		}
 
		try
		{
			String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
			con = DriverManager.getConnection(url,"***","***");	//	Chargement du pilote et connexion à la base
			con.setAutoCommit (false);
		}
		catch (SQLException e)
		{	
			System.out.println ("connection impossible");
		}	
 
		try
		{
			String sql = " begin prc_EMPRUNT(?,?); end";
			CallableStatement CS = con.prepareCall(sql); 									// 	Création d'un objet requête directe
 
			CS.setString(2, x);
			CS.setString(1, vID );
 
			con.commit();
			CS.close(); 
			con.close(); 		
 
 
		}
		catch(SQLException e)
		{
			System.out.println ("Problème SQL !");
			e.printStackTrace ();
		}
	}