2010-10-27 5 views
1

J'ai créé un exemple simple d'une table avec une colonne de XMLTypeerreur de syntaxe Oracle XMLTABLE

--set up the able 
CREATE TABLE dept (name varchar2(20), employees XMLTYPE); 

--insert a test row 
INSERT INTO dept VALUES (
      'Sales', 
      XMLTYPE.createxml(
      '<?xml version="1.0" encoding="UTF-8"?> 
      <People> 
       <Person> 
       <Name>TED</Name> 
       <Age>35</Age> 
       </Person> 
       <Person> 
       <Name>BEN</Name> 
       <Age>36</Age> 
       </Person> 
       <Person> 
       <Name>EDI</Name> 
       <Age>37</Age> 
       </Person> 
      </People>' 
      ) 
    ); 

Je veux juste aplatir les résultats (à utiliser dans une autre requête) en utilisant la table xml pour que je reçois

Sales | Ted | 35 
Sales | BEN | 36 
Sales | EDI | 37 

J'ai donc écrit cette requête en utilisant XTABLE

SELECT dept name, people.Name, people.Age 
    FROM dept, 
    XMLTABLE('/people' 
     PASSING dept.employees 
     COLUMNS 
     "Name" varchar2(6) PATH '/People/Person/Name', 
     "Age" varchar2(6) PATH '/People/Person/Age' 
     people; 

Cependant, je reçois l'erreur suivante

« ORA-01780: chaîne littérale requise »

et ide met en évidence la ligne suivante

 "Name" varchar2(6) PATH '/People/Person/Name', 

Quelqu'un peut-il me dire ce que je manque/faire le mal

Répondre

1

EDIT - Exécuter ce - alter session set cursor_sharing = exact ou définir cursor_sharing = exact dans le fichier de paramètres.

et vous manque probablement un support de fermeture trop après COLONNES (/ âge) -

SELECT dept name, people.Name, people.Age 
    FROM dept, 
    XMLTABLE('/people' 
     PASSING dept.employees 
     COLUMNS 
     "Name" varchar2(6) PATH '/People/Person/Name', 
     "Age" varchar2(6) PATH '/People/Person/Age') 
     people;