Использование sys_guid в multiinsert при разборе XML
#40081013
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
Ссылка на профиль пользователя:
|
|
|
Добрый день.
Нужно при вставке данных их XML заполнять поле из функции sys_guid .
При этом используется вставка сразу в две таблицы. У меня получается разные GUID!
При этом при мультивставке просто из таблицы - все норм
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.
|
|