あなたはそうのように、SQLステートメントにこれを変換し、それを実行した場合:
COLUMN_VALUE UUID
------------------------ ----------
<UUID>1 test 1</UUID>
<UUID>2 test 2</UUID>
<UUID>3 test 3 </UUID>
<UUID>4 test 4 </UUID>
すなわち:
WITH sample_data AS (SELECT XMLTYPE('<?xml version="1.0" ?>
<StatusUp>
<G_UUIDs>
<UUID>1 test 1</UUID>
<UUID>2 test 2</UUID>
<UUID>3 test 3 </UUID>
<UUID>4 test 4 </UUID>
</G_UUIDs>
</StatusUp>') x FROM dual)
SELECT p.*,
EXTRACTVALUE(VALUE(p), 'StatusUp/G_UUIDs/UUID/text()') AS uuid
FROM sample_data sd,
TABLE(XMLSEQUENCE(EXTRACT(sd.x, '//StatusUp/G_UUIDs/UUID'))) p;
は、問題を発見するのは簡単だろうノードUUID
だけを含むxmlからノードStatusUp/G_UUIDs/UUID
を抽出しようとしています。代わりに、あなたがのために照会しているノードを修正した場合、あなたは正しい結果を得る:
DECLARE
X XMLTYPE := XMLTYPE('<?xml version="1.0" ?>
<StatusUp>
<G_UUIDs>
<UUID>1 test 1</UUID>
<UUID>2 test 2</UUID>
<UUID>3 test 3 </UUID>
<UUID>4 test 4 </UUID>
</G_UUIDs>
</StatusUp>');
BEGIN
FOR r IN (SELECT EXTRACTVALUE(VALUE(p), 'UUID/text()') AS uuid
FROM TABLE(XMLSEQUENCE(EXTRACT(X, '//StatusUp/G_UUIDs/UUID'))) p)
LOOP
DBMS_OUTPUT.PUT_LINE('UUID' || r.uuid);
END LOOP;
END;
/
UUID1 test 1
UUID2 test 2
UUID3 test 3
UUID4 test 4
をしかし、EXTRACTとEXTRACTVALUEは推奨されません - あなたの代わりにXMLTABLEを使用する必要があります。
DECLARE
X XMLTYPE := XMLTYPE('<?xml version="1.0" ?>
<StatusUp>
<G_UUIDs>
<UUID>1 test 1</UUID>
<UUID>2 test 2</UUID>
<UUID>3 test 3 </UUID>
<UUID>4 test 4 </UUID>
</G_UUIDs>
</StatusUp>');
BEGIN
FOR r IN (SELECT *
FROM XMLTABLE('//StatusUp/G_UUIDs/UUID'
PASSING x
COLUMNS uuid varchar2(10) PATH '.'))
LOOP
DBMS_OUTPUT.PUT_LINE('UUID' || r.uuid);
END LOOP;
END;
/
UUID1 test 1
UUID2 test 2
UUID3 test 3
UUID4 test 4
をあなたが実行してみてください
同等のクエリ:
WITH sample_data AS (SELECT XMLTYPE('<?xml version="1.0" ?>
<StatusUp>
<G_UUIDs>
<UUID>1 test 1</UUID>
<UUID>2 test 2</UUID>
<UUID>3 test 3 </UUID>
<UUID>4 test 4 </UUID>
</G_UUIDs>
</StatusUp>') x FROM dual)
SELECT *
FROM sample_data sd,
XMLTABLE('//StatusUp/G_UUIDs/UUID'
PASSING sd.x
COLUMNS uuid varchar2(10) PATH '.');
感謝ノードが間違っていて、私自身の質問に答えようとしていました。私はXMLTABLEを認識しておらず、それを見ていきます。 – HardLeeWorking
xmltableの提案を実行するとエラーが発生します。行1のエラー ORA-19114:XQuery式の解析中にエラーが発生しました:java.lang.NoClassDefFoundError ORA-06512:12行目 – HardLeeWorking
私があなたに与えたコードは?それは私にとって間違いなく働いたからです。もしそうなら、どのバージョンのOracleを実行していますか? – Boneist