Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/12/2011, 10h52   #1
Candidat au titre de Membre du Club
 
Inscription : février 2005
Messages : 65
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 65
Points : 12
Points : 12
Par défaut Enlever les retours chariot dans une table

Bonjour,
j'ai un petit soucis avec une requête qui doit mettre à jour une table en lui enlevant les retour chariots

Code :
1
2
3
4
5
6
UPDATE mvi_prestataire mdt
SET mdt.mvi_prmt = (SELECT REPLACE(t.mvi_prmt , chr(10), '') 
                         FROM mvi_prestataire t 
                         WHERE  t.mvi_id = mdt.mvi_id 
                         AND ((t.mvi_prmt LIKE '%'||chr(10)) OR (t.mvi_prmt LIKE '%'||chr(13))) 
                         AND t.mvi_prmt IS NOT NULL);
Cela ne fonctionne pas et m'affiche
Citation:
Erreur SQL : ORA-06502: PL/SQL : erreur numérique ou erreur sur une valeur
ORA-06512: à "MVI_TRIG_MVI_PRESTAIRE", ligne 7
ORA-04088: erreur lors d'exécution du déclencheur 'MVI_TRIG_MVI_PRESTAIRE'
06502. 00000 - "PL/SQL: numeric or value error%s"
Pouvez me dire ce que ne va pas svp merci
snoopo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2011, 11h01   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 653
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 653
Points : 2 655
Points : 2 655
bonjour,

A quoi vous sert la sous-requête ? (pour moi y en a pas besoin).

Code :
1
2
3
4
 
UPDATE mvi_prestataire mdt
SET mdt.mvi_prmt = REPLACE(t.mvi_prmt , chr(10), '') 
WHERE mdt.mvi_prmt LIKE '%'||chr(10);
Ensuite, j'ai l'impression que vous lancez cette requête dans un trigger, donc est-ce que la requête seul (en dehors du trigger) marche ?
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2011, 11h41   #3
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 686
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 686
Points : 10 435
Points : 10 435
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Sous Windows le retour chariot est CR/LF, soit la concaténation de deux caractères spéciaux :
__________________
Email : http://scr.im/waldar
Waldar est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2011, 15h35   #4
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 313
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 313
Points : 5 817
Points : 5 817
Le troisième paramètre de la fonction Replace n’est pas obligatoire! (personnellement je déteste l’utilisation des guillemets vides avec Oracle)

Citation:
Sous Windows le retour chariot est CR/LF...
C’est un abus de langage de dire ça.
Un retour chariot (CR - carriage return) reste un retour chariot sous Windows comme sous n’importe quel autre système d’exploitation.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2011, 18h09   #5
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 686
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 686
Points : 10 435
Points : 10 435
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Oui c'est vrai, mais j'ai considéré - peut-être à tort - qu'il y avait aussi abus de langage dans la demande initiale.
__________________
Email : http://scr.im/waldar
Waldar est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 14h19   #6
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 440
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 440
Points : 4 183
Points : 4 183
Attention, la requête ne modifie que les lignes finissant par un chr(10), mais enlève tous les chr(10) du libellé.

Cette requête fait réellement du "enlever les retours chariots"
Code :
1
2
3
4
UPDATE mvi_prestataire mdt
SET mdt.mvi_prmt = REPLACE(REPLACE(t.mvi_prmt , chr(10)), chr(13)) 
WHERE INSTR(mdt.mvi_prmt, chr(10)) > 0
OR INSTR(mdt.mvi_prmt, chr(13)) > 0;
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h43.


 
 
 
 
Partenaires

Hébergement Web