[JDBC] Problème avec une procédure SQL
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:
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:
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:
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 ();
}
} |