Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / XMLTable в 12.1 / 25 сообщений из 30, страница 1 из 2
12.04.2017, 16:30
    #39437428
Vint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTable в 12.1
В 11.2.0.3.0 - пример работает
В 12.1.0.2.0 - ORA-01858
пример 1
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT bu_id, pu_id, process_id, YEAR, MONTH, to_date('01.' || MONTH || '.' || YEAR, 'DD.MM.YYYY'), material_id, supplier, form_id
  FROM xmltable('/XML/FILTER' passing
                xmltype('<?xml version="1.0" encoding="UTF-8"?><XML><FILTER><BU_ID>5</BU_ID><PU_ID>76</PU_ID><PROCESS_ID>kz_underground_mining</PROCESS_ID><YEAR>2016</YEAR><MONTH>3</MONTH><SECTOR_ID>-10</SECTOR_ID><MATERIAL_ID></MATERIAL_ID><PROXY_ID>PCK_MNGF615C_NEW2.f_get_data</PROXY_ID><USERMENU_ID>4504</USERMENU_ID><MII_TARGET_FORM_GRID>grid</MII_TARGET_FORM_GRID><USERNAME>ASMARKEVICH</USERNAME></FILTER></XML>')
                columns bu_id NUMBER path '//FILTER/BU_ID'
               ,pu_id NUMBER path '//FILTER/PU_ID'
               ,process_id VARCHAR2(50) path '//FILTER/PROCESS_ID'
               ,YEAR VARCHAR2(4) path '//FILTER/YEAR'
               ,MONTH VARCHAR2(2) path '//FILTER/MONTH'
               ,material_id NUMBER path '//FILTER/MATERIAL_ID'
               ,supplier VARCHAR2(32) path '//FILTER/SUPPLIER_ID'
               ,form_id VARCHAR2(100) path '//FILTER/FORM_ID');


если заменить // в columns на / то работает. можно ли заставить 12.1 работать как 11.2, может есть скрытый параметр?
...
Рейтинг: 0 / 0
12.04.2017, 17:10
    #39437443
tund
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTable в 12.1
в columns path без FILTER - '//BU_ID'
...
Рейтинг: 0 / 0
12.04.2017, 17:22
    #39437446
JaRo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTable в 12.1
В 11.2.0.4.0 тоже ORA-01858
...
Рейтинг: 0 / 0
12.04.2017, 17:35
    #39437456
kaldorey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTable в 12.1
Vint,

12.1 ошибка подтвердилась
12.2 работает

Видимо бага, которую пофиксили. Может copmatible ковырнуть, хз
...
Рейтинг: 0 / 0
12.04.2017, 17:43
    #39437467
Nobody1111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTable в 12.1
Понижать compatible нельзя, он только увеличиваться может. И только на уровне всей базы.
...
Рейтинг: 0 / 0
12.04.2017, 17:49
    #39437473
Vint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTable в 12.1
kaldorey,
copmatible хочеться только для xmltable. но как всегда удивляет то что местами работает местами ломается... и все зависит от версии))) будем копать дальше)
...
Рейтинг: 0 / 0
13.04.2017, 10:25
    #39437764
dba123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTable в 12.1
Vint,

Немного не по теме, но:
А можно посмотреть пример исходных данных, где в columns необходим абсолютный путь?
docThe row pattern in each case is thus expressed as an absolute path; that is, it starts with /. It is the starting point for decomposition by XMLTable. Column patterns, on the other hand, never start with a slash (/); they are always relative to the row pattern of the same XMLTable call
...
Рейтинг: 0 / 0
13.04.2017, 10:31
    #39437767
Vint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTable в 12.1
dba123,
есть такая фраза "так исторически сложилось". и иногда эта фраза очень больно бьет по лбу.... вот как раз этот случай. в более чем сотне пакетов есть // и менять это на / только ручками. так как в некоторых местах // необходим) апгрейд откладывается...
...
Рейтинг: 0 / 0
13.04.2017, 11:05
    #39437799
Vint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTable в 12.1
шикарный пример из 12.1
Код: plsql
1.
2.
3.
4.
SELECT bu_id
  FROM xmltable('/XML/FILTER' passing
                xmltype('<?xml version="1.0" encoding="UTF-8"?><XML><FILTER><BU_ID>5</BU_ID><PU_ID>76</PU_ID><PROCESS_ID>kz_underground_mining</PROCESS_ID><YEAR>2016</YEAR><MONTH>3</MONTH><SECTOR_ID>-10</SECTOR_ID><MATERIAL_ID></MATERIAL_ID><PROXY_ID>PCK_MNGF615C_NEW2.f_get_data</PROXY_ID><USERMENU_ID>4504</USERMENU_ID><MII_TARGET_FORM_GRID>grid</MII_TARGET_FORM_GRID><USERNAME>ASMARKEVICH</USERNAME></FILTER></XML>')
                columns bu_id NUMBER path '/XML/BU_ID');


раньше я боялся ансишного синтаксиса из за странных ошибок теперь начинаю бояться xmltable. у кого есть 12.2 проверьте, пожалуйста, что вернет?
...
Рейтинг: 0 / 0
13.04.2017, 12:38
    #39437869
ora601
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTable в 12.1
Vintшикарный пример из 12.1
Код: plsql
1.
2.
3.
4.
SELECT bu_id
  FROM xmltable('/XML/FILTER' passing
                xmltype('<?xml version="1.0" encoding="UTF-8"?><XML><FILTER><BU_ID>5</BU_ID><PU_ID>76</PU_ID><PROCESS_ID>kz_underground_mining</PROCESS_ID><YEAR>2016</YEAR><MONTH>3</MONTH><SECTOR_ID>-10</SECTOR_ID><MATERIAL_ID></MATERIAL_ID><PROXY_ID>PCK_MNGF615C_NEW2.f_get_data</PROXY_ID><USERMENU_ID>4504</USERMENU_ID><MII_TARGET_FORM_GRID>grid</MII_TARGET_FORM_GRID><USERNAME>ASMARKEVICH</USERNAME></FILTER></XML>')
                columns bu_id NUMBER path '/XML/BU_ID');


раньше я боялся ансишного синтаксиса из за странных ошибок теперь начинаю бояться xmltable. у кого есть 12.2 проверьте, пожалуйста, что вернет?

Ничего не вернуло, а в чем смысл /XML/BU_ID ? баги ищешь ? )
...
Рейтинг: 0 / 0
13.04.2017, 12:48
    #39437880
dba123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTable в 12.1
ora601,

тогда уж так
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
--12c1r
SELECT 
 bu_id
,usermenu_id
,pu_id
  FROM xmltable('/XML/FILTER' 
       passing xmltype('<?xml version="1.0" encoding="UTF-8"?><XML><FILTER><BU_ID>5</BU_ID><PU_ID>76</PU_ID><PROCESS_ID>kz_underground_mining</PROCESS_ID><YEAR>2016</YEAR><MONTH>3</MONTH><SECTOR_ID>-10</SECTOR_ID><MATERIAL_ID></MATERIAL_ID><PROXY_ID>PCK_MNGF615C_NEW2.f_get_data</PROXY_ID><USERMENU_ID>4504</USERMENU_ID><MII_TARGET_FORM_GRID>grid</MII_TARGET_FORM_GRID><USERNAME>ASMARKEVICH</USERNAME></FILTER></XML>')
	columns 
		 bu_id		NUMBER path '/всёчтоугодномеждуслэшами-хотьпусто-1уровень/BU_ID'
		,usermenu_id	NUMBER path '//USERMENU_ID'
		,pu_id		NUMBER path 'PU_ID'
);

     BU_ID USERMENU_ID      PU_ID
---------- ----------- ----------
         5        4504         76
...
Рейтинг: 0 / 0
13.04.2017, 12:52
    #39437884
kaldorey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTable в 12.1
dba123,

Однако, 12.1 xmltable полон сюрпризов - 12.2 BU_ID не возвращает.
...
Рейтинг: 0 / 0
13.04.2017, 12:58
    #39437890
dba123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTable в 12.1
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
--Oracle Database 11g Release 11.2.0.4.0 - 64bit Production
--
     BU_ID USERMENU_ID      PU_ID
---------- ----------- ----------
         5        4504         76

--10g2r
--
     BU_ID USERMENU_ID      PU_ID
---------- ----------- ----------
                  4504         76


с относительным путём в columns - никаких сюрпризов
...
Рейтинг: 0 / 0
13.04.2017, 13:11
    #39437901
Vint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTable в 12.1
ora601,
смысл в версии и внимательном чтении.

dba123,
советую сняться с ручника. как писать правильно я сам могу тебя научить и, поверь, есть чему, а вот как нарвавшись на разное поведение в разных версиях выкрутиться.... знаю не всегда. поэтому и советуюсь.

kaldorey,
то то и оно.. кактус все жёстче))
...
Рейтинг: 0 / 0
13.04.2017, 13:55
    #39437942
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTable в 12.1
Vint,

xml "зарезервированное слово" для xml и не может использоваться в качестве тега. Но маленькими буквами. Возможно баг связан с установками nls_comp/nls_sort
...
Рейтинг: 0 / 0
13.04.2017, 15:06
    #39437991
Vint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTable в 12.1
-2-,
заменил XML на XML1 ничего не изменилось. все так же странно себя ведет.
...
Рейтинг: 0 / 0
13.04.2017, 15:44
    #39438032
dba123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTable в 12.1
Vintdba123,
есть такая фраза "так исторически сложилось". и иногда эта фраза очень больно бьет по лбу.... вот как раз этот случай. в более чем сотне пакетов есть // и менять это на / только ручками. так как в некоторых местах // необходим) апгрейд откладывается...Имхо, надо править код
ты иначе даже на 11.2.0.4 не перейдешь, там xmltable такой же как и в 12.1.0.2
...
Рейтинг: 0 / 0
13.04.2017, 16:45
    #39438109
XMLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTable в 12.1
Код: plsql
1.
2.
3.
4.
5.
SELECT x.*, (select banner from v$version where banner like 'Oracle Database%')
  FROM xmltable('/XML/FILTER' passing
                xmltype('<?xml version="1.0" encoding="UTF-8"?><XML><FILTER><BU_ID>5</BU_ID></FILTER></XML>')
                columns bu_id NUMBER path '/XML/BU_ID'
                          , cd     xmltype path '*') x ;


5 <BU_ID>5</BU_ID> Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
<BU_ID>5</BU_ID> Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
5 <BU_ID>5</BU_ID> Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
Вывод : xpath корректно работает в 11.1.0.7.0
...
Рейтинг: 0 / 0
13.04.2017, 17:12
    #39438141
XMLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTable в 12.1
Vint а вот как нарвавшись на разное поведение в разных версиях выкрутиться....

да никак не выкрутишься. Суть то разного поведения очевидна, применять xpath после xquery трансформации или вместе. Но зачем провоцировать, рассчитывая на совместное применение- не понимаю.
...
Рейтинг: 0 / 0
13.04.2017, 17:23
    #39438152
Vint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTable в 12.1
XMLer,
Начни с первого примера, а не с середины темы... понятно что лень читать.. но пересиль себя. там немного.

dba123,
"ох уж мне эти сказочки.....". представь себе среднюю интерпрайз систему которую пилили лет 5 хотя бы... и представь сколько кода надо перепилить при апгрейде... и это только 1 маааленький косякс который я показал. на самом деле проблем при апгрейде намного больше и если я каждую буду решать переписыванием кода то мне придется переписать всю систему заново, проще не апгрейдиться. поэтому в изначальном сообщении написано "может есть скрытый параметр?".
Я понимаю что у всех песочницы разные, но переписать - для многих не выход. переписать я и сам могу догадаться.
...
Рейтинг: 0 / 0
13.04.2017, 17:36
    #39438168
kaldorey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTable в 12.1
Vint,

Есть еще один вариант, который по приведенным примерам выглядит реалистичнее - переходить сразу на 12.2 после 1 sp))
...
Рейтинг: 0 / 0
13.04.2017, 17:46
    #39438173
XMLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTable в 12.1
Vint,
А что интересного в первом примере, чего нет в следующих? сама ORA-01858? Нет, это детский сад, to_date не может литерал 01.. в дату преобразовать...
Все остальное- чушь и твое неумение писать кейсы, выкинь мусор, останется только то что у меня в кейсе.
Хотя тебя учить- только портить, понтов много знаний ноль.
...
Рейтинг: 0 / 0
14.04.2017, 10:54
    #39438533
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTable в 12.1
Автоботы! Трансформируемся!
Код: 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.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
SQL> SELECT x.*, (select banner from v$version where banner like 'Oracle Database%') ver
  FROM xmltable('/XML/FILTER' passing
                        , cd     xmltype path '*') x ;
                xmltype('<?xml version="1.0" encoding="UTF-8"?><XML><FILTER><BU_ID>5</BU_ID></FILTER></XML>')
                columns   bu_id NUMBER path '/XML/BU_ID'
                        , bubu_id NUMBER path 'BU_ID'
                        , cd     xmltype path '*') x ;

     BU_ID    BUBU_ID CD                             VER
---------- ---------- ------------------------------ ----------------------------------------------------------------------------------------------------
         5          5 <BU_ID>5</BU_ID>               Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production



SELECT /*+ NO_QUERY_TRANSFORMATION */  x.*, (select banner from v$version where banner like 'Oracle Database%') ver
                columns  bu_id NUMBER path '/XML/BU_ID'
  FROM xmltable('/XML/FILTER' passing
                xmltype('<?xml version="1.0" encoding="UTF-8"?><XML><FILTER><BU_ID>5</BU_ID></FILTER></XML>')
                columns  bu_id NUMBER path '/XML/BU_ID'
                        , bubu_id NUMBER path 'BU_ID'
                        , cd     xmltype path '*') x ;

     BU_ID    BUBU_ID CD                             VER
---------- ---------- ------------------------------ ----------------------------------------------------------------------------------------------------
                    5 <BU_ID>5</BU_ID>               Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production



SELECT bu_id, pu_id, process_id, YEAR, MONTH, to_date('01.' || MONTH || '.' || YEAR, 'DD.MM.YYYY'), material_id, supplier, form_id
  FROM xmltable('/XML/FILTER' passing
               ,process_id VARCHAR2(50) path '//FILTER/PROCESS_ID'
                xmltype('<?xml version="1.0" encoding="UTF-8"?><XML><FILTER><BU_ID>5</BU_ID><PU_ID>76</PU_ID><PROCESS_ID>kz_underground_mining</PROCESS_ID><YEAR>2016</YEAR><MONTH>3</MONTH><SECTOR_ID>-10</SECTOR_ID><MATERIAL_ID></MATERIAL_ID><PROXY_ID>PCK_MNGF615C_NEW2.f_get_data</PROXY_ID><USERMENU_ID>4504</USERMENU_ID><MII_TARGET_FORM_GRID>grid</MII_TARGET_FORM_GRID><USERNAME>ASMARKEVICH</USERNAME></FILTER></XML>')
                columns bu_id NUMBER path '//FILTER/BU_ID'
               ,pu_id NUMBER path '//FILTER/PU_ID'
               ,process_id VARCHAR2(50) path '//FILTER/PROCESS_ID'
               ,YEAR VARCHAR2(4) path '//FILTER/YEAR'
               ,MONTH VARCHAR2(2) path '//FILTER/MONTH'
               ,material_id NUMBER path '//FILTER/MATERIAL_ID'
               ,supplier VARCHAR2(32) path '//FILTER/SUPPLIER_ID'
 11                 ,form_id VARCHAR2(100) path '//FILTER/FORM_ID');
SELECT bu_id, pu_id, process_id, YEAR, MONTH, to_date('01.' || MONTH || '.' || YEAR, 'DD.MM.YYYY'), material_id, supplier, form_id
                                                                             *
ERROR at line 1:
ORA-01858: a non-numeric character was found where a numeric was expected



SELECT /*+ NO_QUERY_TRANSFORMATION */ bu_id, pu_id, process_id, YEAR, MONTH, to_date('01.' || MONTH || '.' || YEAR, 'DD.MM.YYYY'), material_id, supplier, form_id
                columns bu_id NUMBER path '//FILTER/BU_ID'
  FROM xmltable('/XML/FILTER' passing
               ,MONTH VARCHAR2(2) path '//FILTER/MONTH'
                xmltype('<?xml version="1.0" encoding="UTF-8"?><XML><FILTER><BU_ID>5</BU_ID><PU_ID>76</PU_ID><PROCESS_ID>kz_underground_mining</PROCESS_ID><YEAR>2016</YEAR><MONTH>3</MONTH><SECTOR_ID>-10</SECTOR_ID><MATERIAL_ID></MATERIAL_ID><PROXY_ID>PCK_MNGF615C_NEW2.f_get_data</PROXY_ID><USERMENU_ID>4504</USERMENU_ID><MII_TARGET_FORM_GRID>grid</MII_TARGET_FORM_GRID><USERNAME>ASMARKEVICH</USERNAME></FILTER></XML>')
                columns bu_id NUMBER path '//FILTER/BU_ID'
               ,pu_id NUMBER path '//FILTER/PU_ID'
               ,process_id VARCHAR2(50) path '//FILTER/PROCESS_ID'
               ,YEAR VARCHAR2(4) path '//FILTER/YEAR'
               ,MONTH VARCHAR2(2) path '//FILTER/MONTH'
               ,material_id NUMBER path '//FILTER/MATERIAL_ID'
               ,supplier VARCHAR2(32) path '//FILTER/SUPPLIER_ID'
               ,form_id VARCHAR2(100) path '//FILTER/FORM_ID');

     BU_ID      PU_ID PROCESS_ID                     YEAR MO TO_DATE   MATERIAL_ID SUPPLIER                         FORM_ID
---------- ---------- ------------------------------ ---- -- --------- ----------- -------------------------------- ------------------------------
         5         76 kz_underground_mining          2016 3  01-MAR-16

...
Рейтинг: 0 / 0
14.04.2017, 11:12
    #39438554
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTable в 12.1
План при этом меняется с
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
--без хинта

---------------------------------------------
| Id  | Operation            | Name | Cost  |

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------
|   0 | SELECT STATEMENT     |      |    39 |
|   1 |  XMLTABLE EVALUATION |      |       |
---------------------------------------------



на

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
--с хинтом

-------------------------------------------------------------------------------------------------------------
| Id  | Operation                           | Name                  | Rows  | Bytes | Cost (%CPU)| Time     |

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                    |                       |       |       |    39 (100)|          |
|   1 |  VIEW                               |                       | 16360 |  2284K|    39   (0)| 00:00:01 |
|   2 |   VIEW                              |                       | 16360 |   543K|    39   (0)| 00:00:01 |
|   3 |    COLLECTION ITERATOR PICKLER FETCH| XQSEQUENCEFROMXMLTYPE | 16360 |       |    39   (0)| 00:00:01 |
-------------------------------------------------------------------------------------------------------------
...
Рейтинг: 0 / 0
14.04.2017, 11:22
    #39438568
XMLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTable в 12.1
env
Автоботы! Трансформируемся!
Код: 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.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
SQL> SELECT x.*, (select banner from v$version where banner like 'Oracle Database%') ver
  FROM xmltable('/XML/FILTER' passing
                        , cd     xmltype path '*') x ;
                xmltype('<?xml version="1.0" encoding="UTF-8"?><XML><FILTER><BU_ID>5</BU_ID></FILTER></XML>')
                columns   bu_id NUMBER path '/XML/BU_ID'
                        , bubu_id NUMBER path 'BU_ID'
                        , cd     xmltype path '*') x ;

     BU_ID    BUBU_ID CD                             VER
---------- ---------- ------------------------------ ----------------------------------------------------------------------------------------------------
         5          5 <BU_ID>5</BU_ID>               Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production



SELECT /*+ NO_QUERY_TRANSFORMATION */  x.*, (select banner from v$version where banner like 'Oracle Database%') ver
                columns  bu_id NUMBER path '/XML/BU_ID'
  FROM xmltable('/XML/FILTER' passing
                xmltype('<?xml version="1.0" encoding="UTF-8"?><XML><FILTER><BU_ID>5</BU_ID></FILTER></XML>')
                columns  bu_id NUMBER path '/XML/BU_ID'
                        , bubu_id NUMBER path 'BU_ID'
                        , cd     xmltype path '*') x ;

     BU_ID    BUBU_ID CD                             VER
---------- ---------- ------------------------------ ----------------------------------------------------------------------------------------------------
                    5 <BU_ID>5</BU_ID>               Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production



SELECT bu_id, pu_id, process_id, YEAR, MONTH, to_date('01.' || MONTH || '.' || YEAR, 'DD.MM.YYYY'), material_id, supplier, form_id
  FROM xmltable('/XML/FILTER' passing
               ,process_id VARCHAR2(50) path '//FILTER/PROCESS_ID'
                xmltype('<?xml version="1.0" encoding="UTF-8"?><XML><FILTER><BU_ID>5</BU_ID><PU_ID>76</PU_ID><PROCESS_ID>kz_underground_mining</PROCESS_ID><YEAR>2016</YEAR><MONTH>3</MONTH><SECTOR_ID>-10</SECTOR_ID><MATERIAL_ID></MATERIAL_ID><PROXY_ID>PCK_MNGF615C_NEW2.f_get_data</PROXY_ID><USERMENU_ID>4504</USERMENU_ID><MII_TARGET_FORM_GRID>grid</MII_TARGET_FORM_GRID><USERNAME>ASMARKEVICH</USERNAME></FILTER></XML>')
                columns bu_id NUMBER path '//FILTER/BU_ID'
               ,pu_id NUMBER path '//FILTER/PU_ID'
               ,process_id VARCHAR2(50) path '//FILTER/PROCESS_ID'
               ,YEAR VARCHAR2(4) path '//FILTER/YEAR'
               ,MONTH VARCHAR2(2) path '//FILTER/MONTH'
               ,material_id NUMBER path '//FILTER/MATERIAL_ID'
               ,supplier VARCHAR2(32) path '//FILTER/SUPPLIER_ID'
 11                 ,form_id VARCHAR2(100) path '//FILTER/FORM_ID');
SELECT bu_id, pu_id, process_id, YEAR, MONTH, to_date('01.' || MONTH || '.' || YEAR, 'DD.MM.YYYY'), material_id, supplier, form_id
                                                                             *
ERROR at line 1:
ORA-01858: a non-numeric character was found where a numeric was expected



SELECT /*+ NO_QUERY_TRANSFORMATION */ bu_id, pu_id, process_id, YEAR, MONTH, to_date('01.' || MONTH || '.' || YEAR, 'DD.MM.YYYY'), material_id, supplier, form_id
                columns bu_id NUMBER path '//FILTER/BU_ID'
  FROM xmltable('/XML/FILTER' passing
               ,MONTH VARCHAR2(2) path '//FILTER/MONTH'
                xmltype('<?xml version="1.0" encoding="UTF-8"?><XML><FILTER><BU_ID>5</BU_ID><PU_ID>76</PU_ID><PROCESS_ID>kz_underground_mining</PROCESS_ID><YEAR>2016</YEAR><MONTH>3</MONTH><SECTOR_ID>-10</SECTOR_ID><MATERIAL_ID></MATERIAL_ID><PROXY_ID>PCK_MNGF615C_NEW2.f_get_data</PROXY_ID><USERMENU_ID>4504</USERMENU_ID><MII_TARGET_FORM_GRID>grid</MII_TARGET_FORM_GRID><USERNAME>ASMARKEVICH</USERNAME></FILTER></XML>')
                columns bu_id NUMBER path '//FILTER/BU_ID'
               ,pu_id NUMBER path '//FILTER/PU_ID'
               ,process_id VARCHAR2(50) path '//FILTER/PROCESS_ID'
               ,YEAR VARCHAR2(4) path '//FILTER/YEAR'
               ,MONTH VARCHAR2(2) path '//FILTER/MONTH'
               ,material_id NUMBER path '//FILTER/MATERIAL_ID'
               ,supplier VARCHAR2(32) path '//FILTER/SUPPLIER_ID'
               ,form_id VARCHAR2(100) path '//FILTER/FORM_ID');

     BU_ID      PU_ID PROCESS_ID                     YEAR MO TO_DATE   MATERIAL_ID SUPPLIER                         FORM_ID
---------- ---------- ------------------------------ ---- -- --------- ----------- -------------------------------- ------------------------------
         5         76 kz_underground_mining          2016 3  01-MAR-16


Именно об этом я и написал, только надеялся что ТС, прочитав про "трансформацию" , догадается от неё отказаться и нароет как затюнить всю БД на ITERATOR PICKLER FETCH PROCEDURE SYS.XMLSEQUENCEFROMXMLTYPE. Только без толку, ему нужна рыба а не удочка.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / XMLTable в 12.1 / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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