У меня есть требование загрузить файл xml в определенную таблицу. Я попытался с кодом ниже, но это не решило мою проблему.загрузка xml файла в таблицу oracle
Данные XML является:
<FAX>
<EMAILOG>
<ID>7839</ID>
<RESPONSE>FAX SENT</RESPONSE>
</EMAILOG>
<EMAILOG>
<ID>7566</ID>
<RESPONSE>FAX NOT SENT</RESPONSE>
</EMAILOG>
</FAX>
Я был порядок выполнения с помощью сетки разработчиков PL/SQL. щелкните правой кнопкой мыши процедуру Test -> Загрузка xml-файла из жесткого диска -> выполнить.
Вот DDL, объясняющий процедуру.
create table emp3 as select * From emp where 1=1;
alter table emp3 add (fax_response varchar2(50));
create global temporary table tmp_xml of xmltype xmltype store as securefile binary xml;
create or replace procedure proc_upd_email_records (loc_xml in clob) is
begin
insert into tmp_xml
values (xmlparse(document loc_xml)) ;
merge into emp3 e
using (
select id
, response
from tmp_xml t
, xmltable(
'/FAX/EMAILOG'
passing t.object_value
columns id number path 'ID'
, response varchar2(250) path 'RESPONSE'
)
) v
on (e.empno = v.id)
when matched then update
set e.fax_response = v.response;
end;
/
, выполнив через PL/SQL Developer метод процедура "Test" Я получаю ниже ошибки
ora 22805 : can not insert null object into object tables or nested tables
Вы можете поделиться тем, что вы используете? Ваш код в основном правильный. Проблема в том, что вы вызываете процедуру. –
Привет, я использую oracle pl sql developer, и я передаю xml-файл, как в параметре mode. просто загрузка xml-файла с компьютера. hard disk.version я использую версию, которую я использую: ** Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 ** – ravt