Предполагая, что у меня есть следующие данные XML, назначенные локальной переменной в PL/SQL типа CLOB, то есть:
l_clob := ‘<xml>
<ticket_order>
<table_no>1<table_no/>
<waiter>Jack<waiter/>
<total_people>12<total_people/>
</ticket_order>
<ticket_order>
<table_no>4<table_no/>
<waiter>Jackie<waiter/>
<total_people>3<total_people/>
</ticket_order>
<ticket_order>
<table_no>2<table_no/>
<waiter>Sally<waiter/>
<total_people>2<total_people/>
</ticket_order>
<ticket_order>
<table_no>11<table_no/>
<waiter>Mike<waiter/>
<total_people>6<total_people/>
</ticket_order>
</xml>';
Поэтому я не храню этот XML в столбце таблицы, так как хотел бы обрабатывать его только в рамках моей процедуры пакета PL/SQL.
Затем, используя указанную выше переменную l_clob
, я выполняю следующее:
retrieve_all_table_no(p_response => SYS.XMLTYPE.CREATEXML(l_clob));
Теперь в моей процедуре:
retrieve_all_table_no(p_response in XMLType)
Как я могу извлечь для каждой строки все значения узлов в пределах <table_no>
?
Опять же, это не исходит из таблицы, все делается в PL/SQL на лету.
Я ожидаю, что смогу получить доступ к каждому отдельному значению для обработки, то есть:
1
4
2
11
Я не могу использовать экстракт, так как это объединит все значения.