IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Ajout d'un CRLF dans un update de champ


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2003
    Messages : 46
    Par défaut Ajout d'un CRLF dans un update de champ
    Bonjour à tous,

    J'ai un problème que je n'arrive pas à solutionner. A cause d'une erreur de réplication, je dois remettre un champ texte sur ma base 2 comme il existe sur la base 1. Ensuite, la transaction passera sans problème.

    Je me heurte bêtement au problème suivante. Lorsque je veux exécuter la requete suivante :

    update table@base2
    set champ_texte='Tatati tatata.
    titi tutu.



    '
    where cle='valeur_clé';

    j'ai l'erreur suivante :
    SP2-0734: commande inconnue au début de "' where cl..." - le reste de la ligne est ignoré.

    En fait, le sql n'aime pas les CRLF en fin de champ.
    Existe-il un moyen de comtourner ce pb ?

    Merci d'avance

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Par défaut
    Il faut concaténer les lignes avec des "pipes".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    update table@base2
    set champ_texte='Tatati tatata.'||
    'titi tutu.'||
    'toto'||
    ''||
    ''||
    ''
    where cle='valeur_clé';
    NB: vous mettre les "pipes" au début de la ligne qui suit.

  3. #3
    Membre confirmé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2003
    Messages : 46
    Par défaut
    Merci pour ta réponse GolDoz mais ça ne marche pas de concaténer comme cela. Je n'ai pas de CRLF dans le champ.

    Par contre, j'ai trouvé qu'en faisant cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    update TABLE@base2
    SET champ_texte=='Tatati tatata.'||chr(13)||
    'titi tutu.'||chr(13)||
    'toto'||chr(13)||
    chr(13)||
    chr(13)
    WHERE cle='valeur_clé';
    ca marche bien.
    Il suffit de savoir si dans le champ, il y a des CRLF ou juste des CR. Dans le cas ou il faut ajouter un LF alors on pipe avec chr(10).

    Pour savoir ce qu'il y a dans une chaine (CR ou CRLF) utiliser la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select dump(champ_texte,10) 
    from TABLE 
    where cle='valeur_cle';
    Voir aussi :
    http://sheikyerbouti.developpez.com/...age=Chap3#L3.1

    Merci quand même.

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Par défaut
    La requête telle que je l'ai écrite fonctionne sous SqlPlus. Vous devez la lire d'une autre façon je suppose.

  5. #5
    Membre confirmé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2003
    Messages : 46
    Par défaut
    Oui, j'utilisais le Worksheet d'Oracle.

  6. #6
    Membre chevronné Avatar de xdescamp
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 300
    Par défaut
    Citation Envoyé par GoLDoZ Voir le message
    La requête telle que je l'ai écrite fonctionne sous SqlPlus. Vous devez la lire d'une autre façon je suppose.
    Je pense plutôt qu'il y a une petite erreur dans la requête que tu as postée: la quote doit être ouverte à la fin de la ligne et fermée sur la suivante.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    UPDATE TABLE@base2
    SET champ_texte='Tatati tatata.'||
    'titi tutu.'||
    'toto'||'
    '||'
    '||'
    '
    WHERE cle='valeur_clé';

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Par défaut
    Citation Envoyé par xdescamp Voir le message
    Je pense plutôt qu'il y a une petite erreur dans la requête que tu as postée: la quote doit être ouverte à la fin de la ligne et fermée sur la suivante.
    Pas du tout.
    Les deux fonctionnent et ne donnent pas le même résultat:

    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
    SQL> SELECT 'toto'||
      2  'titi'||
      3  'tata'
      4  AS ma_chaine
      5  FROM DUAL;
     
    MA_CHAINE
    ------------
    tototititata
     
    SQL> 
    SQL> SELECT 'toto
      2  '||'titi
      3  '||'tata'
      4  AS ma_chaine
      5  FROM DUAL;
     
    MA_CHAINE
    --------------
    toto
    titi
    tata
    Donc si vous ne voulez pas de sauts de ligne ni d'espaces intempestifs, il vaut mieux fermer la chaîne à la fin de la ligne.

  8. #8
    Membre confirmé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2003
    Messages : 46
    Par défaut
    Tu as raison xdescamp, ça marche bien et c'est exactement ce que je veux.

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajouter une condition IF dans un UPDATE ?
    Par Nuks1304 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/12/2012, 19h05
  2. [JSP] Ajout d'une tache dans le planificateur Windows
    Par PhoneKilleR dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 12/09/2003, 15h10
  3. GROUP BY et HAVING dans un UPDATE
    Par MashiMaro dans le forum Langage SQL
    Réponses: 3
    Dernier message: 26/08/2003, 08h03
  4. Ajout d'une colonne dans une table ...
    Par Djedjeridoo dans le forum SQL
    Réponses: 2
    Dernier message: 22/07/2003, 16h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo