Я пытаюсь написать функцию для проверки, существует ли указанный c узел (неважно, где) в XML. Каждая переменная XML может иметь до 6 или 7 пространств имен (я думаю? Я их плохо понимаю), но мне нужно только проверить наличие указанной строки.
Я не могу опубликуйте xml, так как это связано с работой, плюс некоторые из них очень длинные, и я все равно не могу преобразовать их в строку, которую нужно вывести.
Я ДУМАЛ, что хотел что-то простое, например
function test_node_existance (
v_xml_data xmltype;
) return number as
node_exists number;
begin
select existsnode(v_xml_data, '//ItemNumber') into node_exists from dual;
dbms_output.put_line('exists: ' || node_exists);
return node_exists;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('something went wrong');
end;
и получите ответ 1 или 0, но это не работает. Я не знаю (или не волнуюсь), насколько она глубока или каковы ее родители, я просто хочу проверить, существует она или нет. На некоторых входах я могу использовать .getClobValue (), но многие из них я не могу (слишком долго), поэтому у меня нет простого способа преобразовать его в строку, а затем проверить это. Я просто не знаю PL SQL достаточно хорошо знаю, с чего начать искать.