Mam proste zapytanie:Wstawianie węzła podrzędnego w kolumnie XMLTYPE
WITH xtbl AS (
SELECT XMLTYPE ('<a><b>1</b></a>') AS xcol
FROM DUAL
)
SELECT XMLQUERY ('copy $tmp := .
modify
insert node <c>2</c>
into $tmp/a/b
return $tmp'
PASSING xcol
RETURNING CONTENT) AS newxcol
FROM xtbl;
Co staram się zrobić to wstawić węzeł <c>
po <b>
wewnątrz węzła <a>
ale Oracle 12c jest rzucanie ten błąd :
ORA-19114: XPST0003 - error during parsing the XQuery expression:
LPX-00801: XQuery syntax error at 'EOF'
5 -
-^
Chcę wyjście jak:
NEWXCOL
-------------
<a>
<b>1</b>
<c>2</c/>
</a>
Próbowałem szukać w Oracle Docs dla zastąpienia appendChildXML
i postępować zgodnie z tym przykładem, ale tylko dostałem błąd.
Wiem, że to bardzo proste i brakuje mi czegoś oczywistego. Proszę pomóż.
umm, czy jesteś pewien, że używasz przynajmniej Oracle Database 12c Release 1? Twój komunikat o błędzie wyraźnie stwierdza, że aktualizacja XQuery nie jest obsługiwana. Na podstawie dokumentacji powiązanej z nim została wprowadzona w powyższej wersji. Jakiej wersji Oracle używasz? – dirkk
@dirkk, używam Oracle 12.1.0.1. Zaktualizowałem błąd, który dostaję. – Rachcha
Twoje zapytanie jest w porządku. Po prostu zapomniałeś zamknąć tag dodawanego węzła (''). Ponadto, aby uzyskać pożądany wynik, ścieżka docelowa musi mieć wartość '$ tmp/a', a nie' $ tmp/a/b'. –