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:
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
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;
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 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); } }
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 (); } }
Partager