Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Использование sys_guid в multiinsert при разборе XML / 3 сообщений из 3, страница 1 из 1
30.06.2021, 19:10
    #40081013
новый2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование sys_guid в multiinsert при разборе XML
Добрый день.
Нужно при вставке данных их XML заполнять поле из функции sys_guid .
При этом используется вставка сразу в две таблицы. У меня получается разные GUID!
При этом при мультивставке просто из таблицы - все норм
Код: sql
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.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
create table tab_doc (DOC_ID varchar(36),
                           DATE_CREATE date,
                           TYPE_DOC varchar(3) );
create table tab_doc_text (DOC_ID varchar(36),
                           DOC_TXT clob );
SQL> INSERT ALL
  2      INTO tab_doc  
  3             values (DOCUM_ID,DDATE,'NEW')
  4     INTO tab_doc_text values ( DOCUM_ID, CLOB_txt)
  5       select sys_guid()  DOCUM_ID,sysdate ddate, 'text'||level CLOB_txt 
  6       from dual connect by level<4;

6 rows created.

SQL> 
SQL>  select  * from tab_doc;

DOC_ID                               DATE_CREA TYP
------------------------------------ --------- ---
C5FE8A2296B237B8E053C402A8C09059     30-JUN-21 NEW
C5FE8A2296B337B8E053C402A8C09059     30-JUN-21 NEW
C5FE8A2296B437B8E053C402A8C09059     30-JUN-21 NEW

SQL>   select  * from tab_doc_text;     

DOC_ID                               DOC_TXT
------------------------------------ -----------------------------------------------------
C5FE8A2296B237B8E053C402A8C09059     text1
C5FE8A2296B337B8E053C402A8C09059     text2
C5FE8A2296B437B8E053C402A8C09059     text3

SQL> INSERT ALL
  2      INTO tab_doc  
  3             values (DOCUM_ID,DDATE,TYPE_D)
  4     INTO tab_doc_text values ( DOCUM_ID, CLOB_TXT)
  5       select sys_guid()  DOCUM_ID,DDATE, CLOB_TXT,TYPE_D 
  6        from (select xmltype('<?xml version="1.0" encoding="UTF-8"?>
  7  <ROWSET>
  8   <ROW>
  9     <DATE_CREATE>2021-06-25</DATE_CREATE>
 10     <TYPE_DOC>NEW</TYPE_DOC>
 11     <DOC_TXT>text1</DOC_TXT>
 12   </ROW>
 13   <ROW>
 14     <DATE_CREATE>2021-06-26</DATE_CREATE>
 15     <TYPE_DOC>NEW</TYPE_DOC>
 16     <DOC_TXT>text2</DOC_TXT>
 17   </ROW>
 18    <ROW>
 19     <DATE_CREATE>2021-06-30</DATE_CREATE>
 20     <TYPE_DOC>OLD</TYPE_DOC>
 21     <DOC_TXT>text3</DOC_TXT>
 22   </ROW>
 23  </ROWSET>') xml_file from dual) tt,xmltable ('/ROWSET/ROW' 
 24           PASSING tt.xml_file COLUMNS                    
 25           DDATE date PATH 'DATE_CREATE' ,
 26           TYPE_D      varchar(3) PATH 'TYPE_DOC',
 27           CLOB_TXT clob PATH  'DOC_TXT') ;

6 rows created.

SQL> select  * from tab_doc;

DOC_ID                               DATE_CREA TYP
------------------------------------ --------- ---
C5FE8A2296B237B8E053C402A8C09059     30-JUN-21 NEW
C5FE8A2296B337B8E053C402A8C09059     30-JUN-21 NEW
C5FE8A2296B437B8E053C402A8C09059     30-JUN-21 NEW
C5FE8A2296B537B8E053C402A8C09059     25-JUN-21 NEW
C5FE8A2296B737B8E053C402A8C09059     26-JUN-21 NEW
C5FE8A2296B937B8E053C402A8C09059     30-JUN-21 OLD

6 rows selected.

SQL>  select  * from tab_doc_text;

DOC_ID                               DOC_TXT
------------------------------------ -----------------------------------------------------
C5FE8A2296B237B8E053C402A8C09059     text1
C5FE8A2296B337B8E053C402A8C09059     text2
C5FE8A2296B437B8E053C402A8C09059     text3
C5FE8A2296B637B8E053C402A8C09059     text1
C5FE8A2296B837B8E053C402A8C09059     text2
C5FE8A2296BA37B8E053C402A8C09059     text3

6 rows selected.
...
Рейтинг: 0 / 0
30.06.2021, 19:31
    #40081015
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование sys_guid в multiinsert при разборе XML
новый2,

Добавь хинт no_merge в подзапрос разбора xml
...
Рейтинг: 0 / 0
01.07.2021, 16:21
    #40081185
новый2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование sys_guid в multiinsert при разборе XML
Sayan Malakshinov,
Спасибо
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Использование sys_guid в multiinsert при разборе XML / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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