I have a problem proceed xml data to insert in oracle table, here is my xml :
gordon
Here is the target table:
CREATE TABLE my_test
(
LastName varchar2(20),
phone NUMBER,
code varchar2(20),
address VARCHAR2(100)
);
The code to populate it:
SET serveroutput ON
DECLARE
l_xml xmltype;
l_val VARCHAR2(1000) := '
gordon
100
213
jl. jalan pelan-pelan ke bekasi, indonesia
mark
jl. jalan cepet-cepet ke jakarta, indonesia
';
l_lastname varchar2(50);
l_phone number;
l_code number;
l_address varchar2(200);
BEGIN
l_xml := xmltype(l_val);
FOR x IN
(SELECT VALUE(p) col_val
FROM TABLE(XMLSEQUENCE(EXTRACT(l_xml, '/begin/entry'))) p
)
loop
IF x.col_val.existsnode('/entry/lastname/text()') > 0 THEN
l_lastname := x.col_val.extract('/entry/lastname/text()').getstringval();
END IF;
if x.col_val.existsnode('/entry/numberlist/number/text()') > 0 then
l_phone := x.col_val.extract('/entry/numberlist/number/text()').getstringval();
end if;
if x.col_val.existsnode('/entry/numberlist/codelist/code/text()') > 0 then
l_code := x.col_val.extract('/entry/numberlist/codelist/code/text()').getstringval();
end if;
IF x.col_val.existsnode('/entry/address/addresslist/text()') > 0 THEN
l_address := x.col_val.extract('/entry/address/addresslist/text()').getstringval();
end if;
INSERT INTO my_test
(
lastname,
phone,
code,
address
)
VALUES
(
l_lastname,
l_phone,
l_code,
l_address
);
l_lastname := null;
l_phone := null;
l_code := null;
l_address := null;
end loop;
commit;
end;