powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Народ помогите с xmltable!
25 сообщений из 27, страница 1 из 2
Народ помогите с xmltable!
    #39276785
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытаюсь распарсить:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
select *
  from xmltable('//root' passing xmltype(
                         '<root>
                            <nom>100</nom>
                            <Client_dat>02.03.2015</Client_dat> 
                              <params>
                                  <param>№16</param>
                                  <param>03.01.2015</param>
                                  <param>test</param>
                              </params>
                          </root>') 
                columns 
                     nom varchar2(255) path '//nom',
                     client_dat varchar2(255) path '//Client_dat',
                     params xmltype path '//params/param') c,
       xmltable('*' passing c.params columns param varchar2(255) path '//param') cl



Результат такой:
nom | client_dat | params
1 |100 |02.03.2015 |<XMLTYPE>
2 |100 |02.03.2015 |<XMLTYPE>
3 |100 |02.03.2015 |<XMLTYPE>

в поле params в <XMLTYPE> имеются
Код: xml
1.
<param>№16</param><param>03.01.2015</param><param>test</param>





а нужно чтобы так было:

|nom |client_dat |params
1 |100 |02.03.2015 |№16
2 |100 |02.03.2015 |03.01.2015
3 |100 |02.03.2015 |test
...
Рейтинг: 0 / 0
Народ помогите с xmltable!
    #39276787
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Askat
Код: plsql
1.
       xmltable('*' passing c.params columns param varchar2(255) path '//param') cl

Код: plsql
1.
       xmltable('/param' passing c.params columns param varchar2(255) path '.') cl
...
Рейтинг: 0 / 0
Народ помогите с xmltable!
    #39276788
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicAskat
Код: plsql
1.
       xmltable('*' passing c.params columns param varchar2(255) path '//param') cl

Код: plsql
1.
       xmltable('/param' passing c.params columns param varchar2(255) path '.') cl




Вот тебе большое спасибо! помог!
...
Рейтинг: 0 / 0
Народ помогите с xmltable!
    #39276945
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди добрые, возник следующий вопрос. Как полученный результат вставить в таблицу в одну строку типа?:

nom |client_dat |field1 |field2 |field3
100 |02.03.2015 |№16 |03.01.2015 |test
...
Рейтинг: 0 / 0
Народ помогите с xmltable!
    #39276952
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AskatЛюди добрые, возник следующий вопрос. Как полученный результат вставить в таблицу в одну строку типа?:

nom |client_dat |field1 |field2 |field3
100 |02.03.2015 |№16 |03.01.2015 |test

вcю строку в поле одного столбца - listagg
каждое значение в своё поле - pivot
...
Рейтинг: 0 / 0
Народ помогите с xmltable!
    #39276960
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
taksAв одну строкуне выеживаться с получением из xml нескольких строк, да еще через второй xmltable, который, кстати, в приведенном виде может стать неожиданностью, если params не заполнено.
...
Рейтинг: 0 / 0
Народ помогите с xmltable!
    #39276964
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FogelAskatЛюди добрые, возник следующий вопрос. Как полученный результат вставить в таблицу в одну строку типа?:

nom |client_dat |field1 |field2 |field3
100 |02.03.2015 |№16 |03.01.2015 |test

вcю строку в поле одного столбца - listagg
каждое значение в своё поле - pivot


не в один столбец, а по столбцам, всего 5 столбец т.е. в столбец nom значение 100 , в столбец client_dat значение 02.03.2015 , в столбец field1 значение №16 , в столбец field2 значение 03.01.2015 , в столбец field3 значение test
...
Рейтинг: 0 / 0
Народ помогите с xmltable!
    #39276974
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Askatв столбец field1 значение №16
Код: plsql
1.
, param1 ... path '//params/param[1]'
...
Рейтинг: 0 / 0
Народ помогите с xmltable!
    #39276981
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicAskatв столбец field1 значение №16
Код: plsql
1.
, param1 ... path '//params/param[1]'



Есть, получилось, Спасибо тебе!!!
...
Рейтинг: 0 / 0
Народ помогите с xmltable!
    #39276994
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AskatЕсть, получилосьУчи xmlpath не методом сиюминутного тыка.
...
Рейтинг: 0 / 0
Народ помогите с xmltable!
    #39279388
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicAskatЕсть, получилосьУчи xmlpath не методом сиюминутного тыка.


Структура изменилась, как теперь распарсить?

Код: xml
1.
2.
3.
4.
5.
6.
                                  
<params>
<param column = "SCHET_IZV">123456789</param>
<param column = "PERIOD">234</param>
<param column = "RES">0</param>
</params>
...
Рейтинг: 0 / 0
Народ помогите с xmltable!
    #39279389
taksA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AskatСтруктура измениласьКакой неожиданный поворот. Кто давал советы, ну просто обязаны взять решение на пожизненное сопровождение.
...
Рейтинг: 0 / 0
Народ помогите с xmltable!
    #39279390
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
taksAAskatСтруктура измениласьКакой неожиданный поворот. Кто давал советы, ну просто обязаны взять решение на пожизненное сопровождение.

я не часто занимаюсь парсингом через pl-sql к тому же я новичок в среде оракл и вот неожиданно дали задание пропарсить, а так смог бы через делфи, ну помогите люди добрые, изучать долго времени уйдет!!!
...
Рейтинг: 0 / 0
Народ помогите с xmltable!
    #39279392
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AskatСтруктура изменилась, как теперь распарсить?Не i-тый параметр, а у которого такой-то атрибут равен такому-то значению.
...
Рейтинг: 0 / 0
Народ помогите с xmltable!
    #39279395
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Askatизучать долго времени уйдет!!!Знания лишними не бывют.
Askatа так смог бы через делфиНу да, там же XPath совсем другой
...
Рейтинг: 0 / 0
Народ помогите с xmltable!
    #39279397
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicAskatСтруктура изменилась, как теперь распарсить?Не i-тый параметр, а у которого такой-то атрибут равен такому-то значению.


было бы лучше явно определить название параметра, но у мення что-то не так, пустое значение:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
select  *

  from xmltable('pay_doc' passing xmltype(
                              '<pay_doc>
                                 [SRC XML] <nom>18545885</nom>
                                  <filial_id>4</filial_id>
                                  <rko_id>1000</rko_id>
                                  <provider_id>2119</provider_id>
                                  <lic_id>607057</lic_id>
                                  <client_dat>20.07.2016</client_dat>
                                  <summ>24781</summ>
                                  <client_komis>150</client_komis>
                                  <input_summ>24931</input_summ>
                                  <client_fio>асан л&#1241;йл&#1241; ер&#1171;азы&#1179;ызы</client_fio>
                                  <client_address>мкр курылысшы ул кокорай д 18 кв 20</client_address>
                                  <client_phone>№ 808/14-01 от 29.10.2014</client_phone>
                                  <create_user_id>2600</create_user_id>
                                  <params>
                                     <param column = "SCHET_IZV">123456789</param>
                                     <param column = "PERIOD">234</param>
                                     <param column = "RES">0</param>
                                  </params>
                              </pay_doc>'


)
columns
nom varchar2(255) path 'nom',
filial_id varchar2(255) path 'filial_id',
rko_id varchar2(255) path 'rko_id',
provider_id varchar2(255) path 'provider_id',
lic_id varchar2(255) path 'lic_id',
client_dat varchar2(255) path 'client_dat',
summ varchar2(255) path 'summ',
client_komis varchar2(255) path 'client_komis',
input_summ varchar2(255) path 'input_summ',
client_fio varchar2(255) path 'client_fio',
client_address varchar2(255) path 'client_address',
client_phone varchar2(255) path 'client_phone',
create_user_id varchar2(255) path 'create_user_id',

SCHET_IZV varchar2(255) path 'params/param[@SCHET_IZV]',
PERIOD varchar2(255) path 'params/param[@PERIOD]',
RES varchar2(255) path 'params/param[@RES]'


) с;
[/SRC]
...
Рейтинг: 0 / 0
Народ помогите с xmltable!
    #39279398
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Askat]Elicпропущено...
Не i-тый параметр, а у которого такой-то атрибут равен такому-то значению.


было бы лучше явно определить название параметра, но у мення что-то не так, пустое значение:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
select  *

  from xmltable('pay_doc' passing xmltype(
                              '<pay_doc>
                                 [SRC XML] <nom>18545885</nom>
                                  <filial_id>4</filial_id>
                                  <rko_id>1000</rko_id>
                                  <provider_id>2119</provider_id>
                                  <lic_id>607057</lic_id>
                                  <client_dat>20.07.2016</client_dat>
                                  <summ>24781</summ>
                                  <client_komis>150</client_komis>
                                  <input_summ>24931</input_summ>
                                  <client_fio>асан л&#1241;йл&#1241; ер&#1171;азы&#1179;ызы</client_fio>
                                  <client_address>мкр курылысшы ул кокорай д 18 кв 20</client_address>
                                  <client_phone>№ 808/14-01 от 29.10.2014</client_phone>
                                  <create_user_id>2600</create_user_id>
                                  <params>
                                     <param column = "SCHET_IZV">123456789</param>
                                     <param column = "PERIOD">234</param>
                                     <param column = "RES">0</param>
                                  </params>
                              </pay_doc>'


                          ) 
                columns 
                    nom             varchar2(255) path 'nom',
                    filial_id       varchar2(255) path 'filial_id',
                    rko_id          varchar2(255) path 'rko_id',
                    provider_id     varchar2(255) path 'provider_id',
                    lic_id          varchar2(255) path 'lic_id',
                    client_dat      varchar2(255) path 'client_dat',
                    summ            varchar2(255) path 'summ',
                    client_komis    varchar2(255) path 'client_komis',
                    input_summ      varchar2(255) path 'input_summ',
                    client_fio      varchar2(255) path 'client_fio',
                    client_address  varchar2(255) path 'client_address',
                    client_phone    varchar2(255) path 'client_phone',
                    create_user_id  varchar2(255) path 'create_user_id',

                    SCHET_IZV       varchar2(255) path 'params/param[@SCHET_IZV]',
                    PERIOD       varchar2(255) path 'params/param[@PERIOD]',
                    RES       varchar2(255) path 'params/param[@RES]'
                    
                    
                    ) с;





, param1 ... path '//params/param[1]' не пойдет
...
Рейтинг: 0 / 0
Народ помогите с xmltable!
    #39279400
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Askat
Код: plsql
1.
path 'params/param[@SCHET_IZV]'

Elicу которого такой-то атрибут равен такому-то значению
...
Рейтинг: 0 / 0
Народ помогите с xmltable!
    #39279402
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicAskat
Код: plsql
1.
path 'params/param[@SCHET_IZV]'

Elicу которого такой-то атрибут равен такому-то значению

да

в общем надо распарсить это:

Код: xml
1.
2.
3.
4.
5.
                                  <params>
                                     <param column = "SCHET_IZV">123456789</param>
                                     <param column = "PERIOD">234</param>
                                     <param column = "RES">0</param>
                                  </params>



вот такой вариант не пойдет:
Код: plsql
1.
2.
3.
                    SCHET_IZV       varchar2(255) path 'params/param[1]',
                    PERIOD       varchar2(255) path 'params/param[2]',
                    RES       varchar2(255) path 'params/param[3]'



т.к. есть система с которой будут выгружаться данные в xml заранее указанные поля и соответсвенно этот xml импортируется d другую систему
...
Рейтинг: 0 / 0
Народ помогите с xmltable!
    #39279403
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AskatElicпропущено...
пропущено...даЧудак, это была последняя подсказка. Дальше жевать нельзя.
...
Рейтинг: 0 / 0
Народ помогите с xmltable!
    #39279405
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicAskatпропущено...
даЧудак, это была последняя подсказка. Дальше жевать нельзя.


не работает, уже пробовал
...
Рейтинг: 0 / 0
Народ помогите с xmltable!
    #39279406
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Askatне работает, уже пробовалТы непроходимый добролёт. http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
Народ помогите с xmltable!
    #39279665
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicAskatне работает, уже пробовалТы непроходимый добролёт. http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM


Не получается, может все таки поможете?!
...
Рейтинг: 0 / 0
Народ помогите с xmltable!
    #39279694
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AskatНе получается, может все таки поможете?!В xmltable додумаешься куда вставить?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
with t as
(select 
'<params>
   <param column = "SCHET_IZV">123456789</param>
   <param column = "PERIOD">234</param>
   <param column = "RES">0</param>
</params>' str
from dual)
select
extract(x, '/params/param[@column="PERIOD"]/text()') value_by_attr,
extract(x, '/params/param[text()="123456789"]/@column') attr_by_value
from (select xmltype(str) x from t);


Код: plaintext
1.
2.
3.
VALUE_BY_ATTR ATTR_BY_VALUE
------------- -------------
234           SCHET_IZV    
1 row selected.
...
Рейтинг: 0 / 0
Народ помогите с xmltable!
    #39279781
Радеющий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic, а потом dbms_photoshop,
СПАСИБО ВАМ!
я (не ТС) по результатам разбора этой темы много узнал, пытаясь решить за ТС задачу, и сильно повысил скиллы по разбору xml любой вложенности с любым набором атрибутов
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Народ помогите с xmltable!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]