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 oracle avec BLOB


Sujet :

SQL Oracle

  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Par défaut Erreur oracle avec BLOB
    Bonsoir

    Voici ma question, j'espère que qq'un saura y répondre car je sèche.

    Je dispose de la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT DISTINCT fact.id_facture_post AS id_facture_post,
      cli.id_client AS crdcustid,
      fact.date_consolidation AS date_consolidation,
      fact.consommation AS consommation,
      fact.crdserial AS crdserial,
      fact.crdtype AS id_type_carte,
      fact.fichier_facture AS fichierfacture
    FROM t_postfacturation_facture fact,
      t_client cli,
      crd carte
    WHERE fact.crdserial = carte.crdserial
     AND carte.crdcustid = cli.id_client
    J'ai ce message d'erreur d'oracle sql developper :
    type de données incohérents : attendu -; obtenu : blob

    (c'est fichier_facture qui est de type blob, lorsque je l'enlève, la requete passe bien)

    Voila, il y a un problème avec fichier_facture mais je n'arrive pas a faire en sorte que cela fonctionne

    Merci

  2. #2
    Membre expérimenté Avatar de DAB.cz
    Inscrit en
    Octobre 2006
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 221
    Par défaut
    Tri d'après le BLOB est interdit. DISTINCT est le même cas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    create table tb (a number, b blob);
     
    select * from tb order by b;
    ORA-00932: type de données incohérents : attendu -; obtenu : blob
     
    select distinct a, b from tb;
    ORA-00932: type de données incohérents : attendu -; obtenu : blob
    Pourqoui SELECT obtient-il DISTINCT?

    DAB

  3. #3
    Membre Expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Par défaut
    C'est logique : un distinct obligeant à comparer, il tri les données pour comparer => rejet sur un lob

  4. #4
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Par défaut
    Merci bien. En enlevant le distinct cela marche beaucoup mieux. Cependant, j'ai maintenant un autre problème. Je veux insérer une donnée issue d'un fichier pdf (il s'agit du code d'un pdf lui même "%PDF-1.3 ...")

    Le message que j'ai est maintenant le suivant

    ORA-01704 Constante de chaîne trop longue ...

    Dois je remplacer BLOB par CLOB dans mon cas et que dois-je faire pour ne plus avoir ce message ?

    Autre problème, peut etre lié au 1er. Cette requete donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update t_postfacturation_facture set fichier_facture = 'jhjghjgh' where id_facture_post = 528
    nombre hexadécimal non valide. Si quelqu'un pouvait m'expliquer la raison de ce message. (fichier_fcature est de type BLOB et id_facture_post est la clé primaire de la table)

    Merci

  5. #5
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Par défaut
    En fait, pour etre plus clair, mon souci est que je voudrais insérer un BLOB

  6. #6
    Membre expérimenté Avatar de DAB.cz
    Inscrit en
    Octobre 2006
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 221
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update t_postfacturation_facture set fichier_facture = <BLOBDATA> where id_facture_post = 528
    <BLOBDATA> - utilise le type RAW dans SQL. Si le VARCHAR2 est appliqué, la conversion VARCHAR2 -> RAW est réalisée. Donc suivant va fonctionner:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update t_postfacturation_facture set fichier_facture = '00FF0A5D' where id_facture_post = 528
    DAB

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/10/2009, 21h13
  2. Erreur Oracle ORA-12154 avec 10g et odp .NET
    Par Xaar dans le forum Connexions aux bases de données
    Réponses: 2
    Dernier message: 27/03/2008, 10h12
  3. ERREUR UPDATE Avec java et oracle
    Par gloglo dans le forum JDBC
    Réponses: 7
    Dernier message: 20/10/2006, 09h35
  4. PB BDE erreur 15879 avec oracle
    Par korntex5 dans le forum Oracle
    Réponses: 1
    Dernier message: 27/02/2006, 11h59
  5. [C#] Erreur Oracle avec une requete paramétrée
    Par gael.mases dans le forum C#
    Réponses: 1
    Dernier message: 02/12/2005, 10h39

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