| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Oracle > как передать переменную в запрос XMLQuery из кода |
| Автор: day2030 24.10.2012, 10:09 | ||
| Всем доброго времени суток. Подскажите пожалуйста решение следующей проблемы если такое возможно. В коде pl/sql организован цикл. В теле цикла идет выборка из xml файла, каждый xml файл хранится в таблице. Значение xmlquery нужно получать по номеру узла, а номер узла это переменная j определенная в цикле:
Данный код не работает т.к. перменная j определена в цикле а не в запросе XMLQuery. Т.е. если j заменить на конкретное значение то все работает: for j in 1..x loop select XMLQuery('//DocBatch[position()=1]' passing xmltype(b.filexml_r) returning content).getStringVal() into mytest from table_car b where b.keyxml_r = keyxml_r; end loop; [/code] Как передать в XMLQuery переменную определенную в коде и вообще возможно ли это???? Заранее спасибо. |
| Автор: Zloxa 24.10.2012, 10:31 | ||
в лоб, конкатенацией?
Добавлено @ 10:33 но так вобще такой разбор выглядит странным. Что мешает распарсить xml одним XMLTable и просто обойти курсор? |
| Автор: day2030 24.10.2012, 10:51 | ||
Попробовала, но не работает:
Выходит ошибка: pl/aql: ora-19109 returning keyword expected |
| Автор: Zloxa 24.10.2012, 10:51 | ||||||
Добавлено @ 11:00 Передать выражение через бинд
Обратите внимание, что getStringVal возвращает вам текстовое представление XML фрагмента возвращенного XMLQuery. По этой причине символ меньше не преобразовалсяю Для того, чтобы извлечь значение, используйте extractValue
|
| Автор: day2030 24.10.2012, 11:06 |
| Спасибо большое, сейчас поробую оптимизировать подсказку под свои нужды. Просто сам xml очень сожный и там много вложений, у DocBatch есть вложения значения которых мне как раз и нужны а самих элементов DocBatch очень много, поэтому я и хотела последовательно работать с каждым. |
| Автор: Zloxa 24.10.2012, 11:16 |
XQuery - весьма развитый язык и, когда его имплементация не глючит, позволяет обработать конструкции практически любой сложности. Увы, в оракле имплементация весьма глючна. |