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 :

Erreur ORA-01704 sql developer [Fait]


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 14
    Par défaut Erreur ORA-01704 sql developer
    Bonjour à tous,

    Je suis nouveau sur ce forum, et j'espère avoir posté dans la bonne catégorie.

    J'ai un problème avec une requête sql que j'exécute par sql developer 1.0.0.13.43, il s'agit d'un update faisant donc plus de 4000 caractères sur un champ dans un table en LONG.

    J'ai pas mal cherché, et j'ai trouvé quelques scripts qui permettent de scinder le texte en plusieurs variables bind, ou en changeant en CLOB la table (j'ai pas trop compris ce point sur CLOB).

    Je suis assez débutant, et je ne comprends pas grand chose.

    Le truc qui me bloque, c'est que je ne sais pas executer les scripts du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    begin
    for i in 1..100 -- or a select statement
    execute immediate
    'insert into bla (a, b, c) values (:x, :y, :z)'
    using a_variable, another_variable, yet_another;
    end loop;
    end;
    Si quelqu'un pouvait brièvement m'aider sur la façon de faire et d'exécuter un tel script, ou m'envoyer sur une aide ou un tuto ce serait super

    Merci d'avance,
    Jérémie

  2. #2
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Bonjour et bienvenu à toi

    Peux-tu nous mettre le code qui provoque cette erreur ?

    Pour ce qui est d'un tuto sur execute immediate, il y a celui-ci :
    http://sheikyerbouti.developpez.com/execute_immediate/

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 14
    Par défaut
    Merci pour ta réponse.

    Tu vas rire, mais je fais un update tout simple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update description set description='Texte de plus de 4000 caractères avec des sauts de ligne' where descriptionid='3843186';
    J'avais bien vu le lien que tu m'as indiqué, mais je ne comprends pas comment utiliser le mode SQL natif. Je ne dispose que de SQL developer pour l'instant.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 14
    Par défaut
    En fait, je me rends compte que je n'y connais vraiment rien.
    Pour executer un script, il me faut sql*plus (si oui, je pense avoir les sources avec le client oracle) ?
    Je ne suis pas sorti de l'auberge
    @+

  5. #5
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Une chaîne de caractères ne peut pas dépasser 4000 caractères.

    Pour faire ce que tu veux faire il faut utiliser le package dbms_lob, et plus particulièrement la fonction dbms_lob.append :
    http://sheikyerbouti.developpez.com/...e=Chap9#L9.2.1

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 14
    Par défaut
    Bonsoir plaineR,

    Merci pour les infos.
    Je me suis pas mal creusé la tête, et j'ai pas mal cherché, mais je suis encore bloqué.

    J'utilise maintenant sql*plus, j'ai donc compris comment exécuter un script.

    Le problème est que je ne sais pas l'écrire ce script maintenant

    Peux tu m'aider à adapter le script source que tu m'as indiqué à la requête que je veux faire à la base (en gros, je ne sais pas trop quoi mettre où )?

    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
    DECLARE
      dest_lob BLOB;
      src_lob BLOB;
    BEGIN
      -- Initialisation des variables LOB --
      SELECT b_lob INTO dest_lob
      FROM lob_table
      WHERE key_value = 12 FOR UPDATE;
     
      SELECT b_lob INTO src_lob
      FROM lob_table
      WHERE key_value = 21;
     
      -- Ajout de src_lob en fin de dest_lob --
      DBMS_LOB.APPEND(dest_lob, src_lob);
      COMMIT;
     
    END;
    Donc je remmet la commande que je veux exécuter à la base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update description set description='Texte de plus de 4000 caractères avec des sauts de ligne' where descriptionid='3843186';
    Merci d'avance pour l'aide.
    Jérémie

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

Discussions similaires

  1. Erreur import data SQL Developer
    Par Tigris dans le forum Import/Export
    Réponses: 0
    Dernier message: 05/04/2013, 17h05
  2. Data pump erreur ORA-39001 via SQL developer
    Par shinchan dans le forum Import/Export
    Réponses: 1
    Dernier message: 31/10/2012, 20h15
  3. Erreur ORA-21000 en PL/SQL pour un trigger
    Par keuhlu dans le forum PL/SQL
    Réponses: 3
    Dernier message: 12/03/2006, 08h47
  4. [Sql*Loader] Erreur ORA-00054
    Par Spyco dans le forum Oracle
    Réponses: 4
    Dernier message: 23/12/2005, 16h43
  5. Erreur ORA-01704 : constante de chaine trop longue
    Par verrec_s dans le forum Oracle
    Réponses: 22
    Dernier message: 13/12/2004, 15h30

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