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

Oracle Discussion :

expression du mauvais type DomNode


Sujet :

Oracle

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 34
    Points : 25
    Points
    25
    Par défaut expression du mauvais type DomNode
    J'ai une fonction dans un package qui prend un objet de type dbms_xmlDom.DOMNode en paramètre et qui retourne un varchar2.

    Dans un bloc pl, je test la fonction en affectant son résultat à une variable, j'obtient bien le résultat attendu.
    Si maintenant, je fais un insert dans une table et comme value, je met la fonction, j'ai l'erreur ORA-06550 expression du mauvais type



    Version ora 9.0.2

    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
     
     
     
    declare
        objDoc dbms_xmlDom.DOMDocument;
        objNode dbms_xmlDom.DOMNode;
        v varchar2(10);
    begin
     
        v:='<root><ART><FUS></FUS></ART></root>';
     
        objDoc:=LIBRARY.LIB_PG_XML.GetDocument(v)
        objNode:=dbms_xslprocessor.selectSingleNode(dbms_xmlDom.MakeNode(dbms_xmlDom.GetDocumentElement(objDoc)), '/root/ART');
     
     
    insert into espion values(LIBRARY.LIB_PG_XML.GetNodeValue2(objNode));
     
    v :=LIBRARY.LIB_PG_XML.GetNodeValue2(objNode);
     
    end;
    Edit par bouyao

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    que donne ceci :
    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
    declare
        objDoc dbms_xmlDom.DOMDocument;
        objNode dbms_xmlDom.DOMNode;
        v varchar2(10);
    begin
     
        v:='<root><ART><FUS></FUS></ART></root>';
     
        objDoc:=LIBRARY.LIB_PG_XML.GetDocument(v)
        objNode:=dbms_xslprocessor.selectSingleNode(dbms_xmlDom.MakeNode(dbms_xmlDom.GetDocumentElement(objDoc)), '/root/ART');
     
    v :=LIBRARY.LIB_PG_XML.GetNodeValue2(objNode);
     
     
    insert into espion values(v);
     
    end;
    et :


  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 34
    Points : 25
    Points
    25
    Par défaut
    espion est simplement une table avec une colonne de type varchar(10).

    Le problème est bien sur le insert.

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    j'aimerai bien voir le message d'erreur exacte et complet avec le code que je propose

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 34
    Points : 25
    Points
    25
    Par défaut
    Je suis confus, votre exemple fonctionne . Vraiment désolé.
    Votre méthode est la même que celle que j'utilisais avant mais je trouve lourd de déclarer des variables et souhaite mettre directement le résultat de la fonction dans le values du Insert.

    Avec mon premier code, Le code erreur complet est :
    Error on line 0
    declare
    objDoc dbms_xmlDom.DOMDocument;
    objNode dbms_xmlDom.DOMNode;


    ORA-06550: Ligne 13, colonne 61 :
    PLS-00382: expression du mauvais type
    ORA-06550: Ligne 13, colonne 47 :
    PLS-00306: numéro ou types d'arguments erronés dans appel à 'GETNODEVALUE2'
    ORA-06550: Ligne 13, colonne 28 :
    PL/SQL: ORA-00904: "LIBRARY"."LIB_PG_XML"."GETNODEVALUE2" : identificateur non valide
    ORA-06550: Ligne 13, colonne 2 :
    PL/SQL: SQL Statement ignored

  6. #6
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    c'est parce que c'est un INSERT VALUES, or il attend une valeur dans ce cas et pas une fonction.

    Voila qui peut marcher :

    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
    declare
        objDoc dbms_xmlDom.DOMDocument;
        objNode dbms_xmlDom.DOMNode;
        v varchar2(10);
    begin
     
        v:='<root><ART><FUS></FUS></ART></root>';
     
        objDoc:=LIBRARY.LIB_PG_XML.GetDocument(v)
        objNode:=dbms_xslprocessor.selectSingleNode(dbms_xmlDom.MakeNode(dbms_xmlDom.GetDocumentElement(objDoc)), '/root/ART');
     
     
    insert into espion SELECT LIBRARY.LIB_PG_XML.GetNodeValue2(objNode) FROM DUAL;
     
    v :=LIBRARY.LIB_PG_XML.GetNodeValue2(objNode);
     
    end;

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 34
    Points : 25
    Points
    25
    Par défaut
    J'ai pris un exemple condensé car ds mon appli, j'ai plusieurs champ et je met donc le values.
    J'ai essayé avec une fonction qui retourne la même chose mais qui ne prend pas de DomNode en param (varchar). Là, je n'ai pas d'erreur.
    De même si j'utilise un to_date...

Discussions similaires

  1. ORA-06553: PLS-382: expression du mauvais type
    Par Goupo dans le forum PL/SQL
    Réponses: 4
    Dernier message: 12/02/2009, 10h26
  2. expression du mauvais type
    Par Ptite_Tigresse dans le forum SQL
    Réponses: 3
    Dernier message: 03/09/2007, 10h13
  3. Réponses: 1
    Dernier message: 12/07/2007, 15h30
  4. [VB.NET]expression d'un type d'expression
    Par new_wave dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/06/2006, 21h40
  5. Champs de mauvais type
    Par sebos63 dans le forum Bases de données
    Réponses: 2
    Dernier message: 17/06/2004, 16h07

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