Bonjour à tous,

Voila mon application crée et exécute une procédure qui selon la date passé paramètre effectue un update. Lors que la date ne répond pas à la condition, la procédure s'exécute normalement et je peux récupérer le message mais lors que la date est correct l'application gèle... L'erreur vient de l'update mais je la trouve pas... je devrais dire je la comprends pas^^

Si vous trouvez le problème se serait super
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
 
try	{
	//création de la procédure si nécessaire.
	requete_sql = "create or replace procedure SP_TAXER\n" +
			"(\n" +
			"DATE_DEB IN OUT varchar\n" +
			")\n" +
			"is\n" +
			"DATE_ERR exception;\n" +
			"begin\n" +
			"if (DATE_DEB >= add_months(sysdate,-1))then\n" +
					"update CONTRAT\n" +
					"set MNT_TPS_CO = MNT_CONTRAT_CO * 0.05,\n" +
					"MNT_TVQ_CO = MNT_CONTRAT_CO * 0.075\n" +
					"where DATE_CONTRAT >= to_date(DATE_DEB, 'DD/MM/YY');\n" +
					"DATE_DEB :='Les contrats après le ' || DATE_DEB || ' ont été taxés.';\n" +
			"else\n" +
					"raise DATE_ERR;\n" +
			"end if;\n" +
			"exception when DATE_ERR then\n" +
					"DATE_DEB :='La date doit être supérieure à la date du jour -1 mois.';\n" +
			"end;";
 
	stmt.executeUpdate(requete_sql);				
	//appel de la procédure
	requete_sql = "{call SP_TAXER (?)}";
	CallableStatement call = connexion.prepareCall(requete_sql);
	//on passe en paramétre la date
	call.setString(1, stringDate);
	//on defini le parametre en tant que paramètre OUT
	call.registerOutParameter(1, Types.VARCHAR);
	call.execute();
	//récupération des ResultSet
 resultatsTextArea.setText(call.getString(1));							    			    
}
catch(Exception ex){
	//On vérifie la présence du message anglais de login invalide.
	if (ex.getMessage().indexOf("invalid username/password")>0) {
		resultatsTextArea.setText("La combinaison mot de passe usager est invalide \n");
	}
	else {
		resultatsTextArea.setText(ex.getMessage() + "\n");
	}
}
J'ai également essayé avec le where suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
"where DATE_CONTRAT >= DATE_DEB;\n" +
Merci d'avance.
AD