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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 34
    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
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    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
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 34
    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
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 34
    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
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    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;

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