Witam,
stworzyłem xml w którym mam 10 rekordów.
Gdy odpalę:
-- Tworzenie tabeli KONTA_AD
create table KONTA_AD (
nr number(3),
imie varchar2(15),
nazwisko varchar2(30),
login varchar2(30),
typ varchar2(30),
dzial varchar2(30),
email varchar2(30),
data_nadania date,
nr_upowaznienia varchar2(13)
);
-- Import danych z pliku XML (import.xml)
DECLARE
pliczek xmltype := xmltype( bfilename('PLIKI_XML','import.xml'), nls_charset_id('AL32UTF8') );
z_nr number(3);
z_imie varchar2(15);
z_nazwisko varchar2(30);
z_login varchar2(30);
z_typ varchar2(30);
z_dzial varchar2(30);
z_email varchar2(30);
z_data_nadania date;
z_nr_upowaznienia varchar2(13);
BEGIN
select zrodlo.nr into z_nr
from xmltable(
'/KONTA_AD/user'
passing pliczek
columns nr varchar2(15) path 'nr'
) zrodlo;
select zrodlo.imie into z_imie
from xmltable(
'/KONTA_AD/user'
passing pliczek
columns imie varchar2(15) path 'imie'
) zrodlo;
select zrodlo.nazwisko into z_nazwisko
from xmltable(
'/KONTA_AD/user'
passing pliczek
columns nazwisko varchar2(30) path 'nazwisko'
) zrodlo;
select zrodlo.login into z_login
from xmltable(
'/KONTA_AD/user'
passing pliczek
columns login varchar2(30) path 'login'
) zrodlo;
select zrodlo.typ into z_typ
from xmltable(
'/KONTA_AD/user'
passing pliczek
columns typ varchar2(30) path 'typ'
) zrodlo;
select zrodlo.dzial into z_dzial
from xmltable(
'/KONTA_AD/user'
passing pliczek
columns dzial varchar2(30) path 'dzial'
) zrodlo;
select zrodlo.email into z_email
from xmltable(
'/KONTA_AD/user'
passing pliczek
columns email varchar2(30) path 'email'
) zrodlo;
select zrodlo.data_nadania into z_data_nadania
from xmltable(
'/KONTA_AD/user'
passing pliczek
columns data_nadania varchar2(30) path 'data_nadania'
) zrodlo;
select zrodlo.nr_upowaznienia into z_nr_upowaznienia
from xmltable(
'/KONTA_AD/user'
passing pliczek
columns nr_upowaznienia varchar2(30) path 'nr_upowaznienia'
) zrodlo;
insert into KONTA_AD (nr,imie,nazwisko,login,typ,dzial,email,data_nadania,nr_upowaznienia)
values (z_nr,z_imie,z_nazwisko,z_login,z_typ,z_dzial,z_email,z_data_nadania,z_nr_upowaznienia);
END;
otrzymuje bład:
Error report:
ORA-01422: dokładne pobranie zwraca większą liczbę wierszy niż zamówiono
ORA-06512: przy linia 13
01422. 00000 - "exact fetch returns more than requested number of rows"
*Cause: The number specified in exact fetch is less than the rows returned.
*Action: Rewrite the query or change number of rows requested
Jeśli w pliku XML z którego importuje jest tylko jeden rekord to dane importują się.
Linia 13 to:
select zrodlo.nr into z_nr