Bonjour tous,

Je ne me débrouille pas trop mal en SQL, mais je sèche cette fois-ci :
Après avoir fait des INSERT dans ma table, je souhaite faire un UDPATE sur le champ PARAM_DATE pour remplacer des variable par un jour de l'année au format DD/MM/YYYY, les requêtes UPDATE que fonctionnent pour toutes les variables sauf la variable "jour-1" et je n'arrive pas à saisir pourquoi. Ca avait pourtant marché au début, j'ai dû modifier quelque chose pour que ça ne fonctionne plus ensuite ...

Voici les données de ma table :

NREQ, NOM_SQL, JOUR_MOIS PARAM_DATE
SEC3-DE, SEC3_R09031301_M01_DE.SQL, 01, jour-1 jour-1 DE
SEC3-DCT, SEC3_R09031301_M01_DCT.SQL, 01, jour-1 jour-1 DCT
181, 181_R09011602_M02.sql, 02, '*' sem_pre_deb sem_pre_fin '*' '*'
200_ELD, R11110401_M01.sql, 05, 04/2014 200_Comptes_ELD.txt
187, 187_R04589602_M02.sql, 02, '*' today '*' '*'

Et les requêtes UPDATE :

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
-- mettre à jour la variable 'today'
update MCO_LANCE_REQUETES_RAD a
set a.PARAM_DATE = replace(a.PARAM_DATE, 'today',  to_char(to_date(jour_mois||'&&mois'||'&&annee',  'DD/MM/YYYY'),'DD/MM/YYYY'))
where a.PARAM_DATE like '%today%';

-- mettre à jour la variable 'jour-1'
update MCO_LANCE_REQUETES_RAD a
set a.PARAM_DATE = replace(a.PARAM_DATE, 'jour-1',  to_char(to_date(jour_mois||'&&mois'||'&&annee',  'DD/MM/YYYY')-1,'DD/MM/YYYY'))
where a.PARAM_DATE like to_char('%jour-1%');

-- mettre à jour la variable sem_pre_deb 
update MCO_LANCE_REQUETES_RAD a
set a.PARAM_DATE = replace(a.PARAM_DATE, 'sem_pre_deb',  to_char(to_date(jour_mois||'&&mois'||'&&annee',  'DD/MM/YYYY')-7,'DD/MM/YYYY'))
where a.PARAM_DATE like '%sem_pre_deb%';

-- mettre à jour la variable sem_pre_fin
update MCO_LANCE_REQUETES_RAD a
set a.PARAM_DATE = replace(a.PARAM_DATE, 'sem_pre_fin',  to_char(to_date(jour_mois||'&&mois'||'&&annee',  'DD/MM/YYYY')-1,'DD/MM/YYYY'))
where a.PARAM_DATE like '%sem_pre_fin%';
Toutes les requêtes UPDATE fonctionnent sauf pour celle où la variable est 'jour-1' , je me demandais si c'était le " -1" de la variable qui posait problème et ça n'est apparemment pas ça qui pose problème (j'ai enlevé le "-1" pour voir, l'erreur reste la même)
Le message d'erreur que j'ai est la suivante :
ORA-01861: le littéral ne concorde pas avec le format chaîne de caractères


Alors, je viens vers vous vous demander ce qui coince dans ma requête UPDATE ? ...

Par avance, merci ... !

Pour vous aider à tester, voici un petit jeu de données :
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
 
CREATE TABLE MCO_LANCE_REQUETES_RAD
(
  NREQ        VARCHAR2(50 BYTE)                 NOT NULL,
  NOM_SQL     VARCHAR2(50 BYTE)                 NOT NULL,
  JOUR_MOIS   VARCHAR2(4 BYTE)                  NOT NULL,
  EXEC        VARCHAR2(3 BYTE)                  NOT NULL,
  PARAM_DATE  VARCHAR2(150 BYTE)                NOT NULL
); 
 
 
INSERT INTO MCO_LANCE_REQUETES_RAD VALUES('SEC3-DE','SEC3_R09031301_M01_DE.SQL','04','O','jour-1 jour-1 DE');
INSERT INTO MCO_LANCE_REQUETES_RAD VALUES('SEC3-DCT','SEC3_R09031301_M01_DCT.SQL','04','O','jour-1 jour-1 DCT');
INSERT INTO MCO_LANCE_REQUETES_RAD VALUES('121','121_R05112502_M05.sql','05','O','2014 04');
INSERT INTO MCO_LANCE_REQUETES_RAD VALUES('176','R08121501_M04.sql','05','O','2014 04 ''*''');
INSERT INTO MCO_LANCE_REQUETES_RAD VALUES('181','181_R09011602_M02.sql','05','O','''*'' sem_pre_deb sem_pre_fin ''*'' ''*''');
INSERT INTO MCO_LANCE_REQUETES_RAD VALUES('SEC11_Soldes physiques','SEC11_R10100401.sql','05','O','jour-1');
INSERT INTO MCO_LANCE_REQUETES_RAD VALUES('191','191_R11031801_M01_avec_index.sql','06','O','today 30/04/2014');