Bonjour à tous,

Je viens de créer un procédure qui prend en paramètre une date 'DD/MM/YY'
Cette procédure doit vérifier si la date est égale ou inférieure à la date courant moins un mois. Par exemple nous sommes le 01/04/09, la date en paramètre doit donc être égale ou supérieure au 01/03/09. Si c'est le cas on update la DB.

Voila ma première procédure mais une erreur de conversion apparaît lors de l'exécution (character to number conversion error)... et ça m'étonnerait que la condition du if fonctionne....:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
create or replace procedure SP_TAXER
	(
		DATE_DEB in date
	)
is	
begin
  if ((to_char(SYSDATE(),'DD/MM/YY') - to_char(DATE_DEB,'DD/MM/YY'))<1)then
	update CONTRAT
		set MNT_TPS_CO = MNT_CONTRAT_CO * 0.05,
		MNT_TVQ_CO = MNT_CONTRAT_CO * 0.075
		where DATE_CONTRAT > DATE_DEB;
  end if;
end;
J'ai également essayé comme ceci, ça fonctionne mais il n'a pas toujours 30 jours dans un mois... :
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
 
 
create or replace procedure SP_TAXER
	(
		DATE_DEB in date
	)
is	
begin
  if ((to_char(SYSDATE(),'DDD') - to_char(DATE_DEB,'DDD'))<31)then
	update CONTRAT
		set MNT_TPS_CO = MNT_CONTRAT_CO * 0.05,
		MNT_TVQ_CO = MNT_CONTRAT_CO * 0.075
		where DATE_CONTRAT > DATE_DEB;
  end if;
end;
Si quelqu'un peu m'aider
Merci,
AD