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 :
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)
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%';
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');
Partager