2017-09-19 31 views
0

我正在从工作簿做示例。我创建了表格并插入了几条记录。下面是我的代码:XMLQuery与Oracle

创建表:

CREATE TABLE test_Pracownicy 
(IDPracownika NUMBER(3), 
Dane XMLTYPE); 

插入记录表:

INSERT INTO test_Pracownicy (IDPracownika, Dane) 
VALUES (1, 
    XMLTYPE(' 
    <PRecord> 
     <Nazwisko>Kowalski</Nazwisko> 
     <Imie>Jan</Imie> 
     <RokUrodz>1980</RokUrodz> 
     <Wzrost>1.77</Wzrost> 
     <DataZatr>2001/02/10</DataZatr> 
    </PRecord>') 
); 

现在我想运行的XMLQuery:

SELECT IDPracownika, 
    XMLQuery(
    'FOR $i IN /PRecord 
     WHERE $i /Nazwisko = "Kowalski" 
     ORDER BY $i/Imie 
     RETURN $i' 
    PASSING by VALUE Dane 
    RETURNING CONTENT) NazwiskoXML 
FROM test_Pracownicy; 

和我出现错误:

ORA-19114: XPST0003 - error during parsing the XQuery expression: 
LPX-00801: XQuery syntax error at 'i' 
1 FOR $i IN /PRecord 
-  ^
19114. 00000 - "error during parsing the XQuery expression: %s" 
*Cause: An error occurred during the parsing of the XQuery expression. 
*Action: Check the detailed error message for the possible causes. 
Error at Line: 117 Column: 6 

回答

0

我改变了查询小(其中,回报...)的信件,它的workging:

SELECT IDPracownika, 
    XMLQuery(
    'for $i in /PRecord 
     where$i /Nazwisko = "Kowalski" 
     order by $i /Imie 
     retrun $i' 
    PASSING by VALUE Dane 
    RETURNING CONTENT) NazwiskoXML 
FROM test_Pracownicy; 

这是区分大小写。