今天跟同事商討整合規格時,遇到一個議題: 如果將多筆資料轉成XML Element,以XML String方式寫入ORACLE欄位,在Stored Procedure裡可否比照Table,用SELECT的方式將多筆資料查詢出來呢?
DECLARE
xt XmlType;
TYPE refCur IS REF CURSOR;
rc refCur;
t VARCHAR2(1024);
i NUMBER;
BEGIN
xt := XmlType(
'<root><item>Item1</item><item>Item2</item><item>Item3</item></root>');
OPEN rc FOR
SELECT extractValue(value(x), '//item/text()') as ItemText
FROM TABLE(XmlSequence(EXTRACT(xt, '//item'))) X;
i := 0;
LOOP
FETCH rc INTO t;
EXIT WHEN rc%NOTFOUND;
i := i + 1;
dbms_output.put_line(i || '->' || t);
END LOOP;
END;