Вы находитесь на странице: 1из 5

create or replace type varchar2_t is table of varchar2(255);

/
create or replace type varchar2_t2 is table of varchar2_t;
/
create or replace
FUNCTION upset_location(column_value varchar2_t2)
RETURN VARCHAR2
IS
outdata VARCHAR2(100);
TYPE t_location_type IS TABLE OF location_layer%ROWTYPE;
l_tab t_location_type := t_location_type();
l_start NUMBER;
--l_size NUMBER := 10000;
column_row varchar2_t;
c NUMBER := 0;
BEGIN
-- Populate collections.
l_start := DBMS_UTILITY.get_time;
for i in 1 .. column_value.count loop
column_row := column_value(i);
IF column_row(1) IS NULL THEN
EXIT;
end if;
UPDATE location_layer
SET trung_tam =column_row(1),
dai_vt =column_row(2),
to_vt =column_row(3),
quan_huyen =column_row(4)
--,site =column_row(5)
--,last_update =TO_DATE(column_row(6),'yyyy/mm/dd hh24:mi:ss'),
--value=column_row(7)
WHERE quan_huyen = column_row(4);

IF ( sql%rowcount = 0 ) THEN
l_tab.extend;
l_tab(l_tab.last).trung_tam:=column_row(1);
l_tab(l_tab.last).dai_vt:=column_row(2);
l_tab(l_tab.last).to_vt:=column_row(3);
l_tab(l_tab.last).quan_huyen:=column_row(4);
--l_tab(l_tab.last).site:=column_row(5);
--l_tab(l_tab.last).last_update:=TO_DATE(column_row(6),'yyyy/mm/dd
hh24:mi:ss');
--l_tab(l_tab.last).value:=column_row(7);
c:=c+1;
END IF;
end loop;

FORALL i IN l_tab.first .. l_tab.last


INSERT INTO location_layer VALUES l_tab(i);

RETURN 'thoi gian la'||(DBMS_UTILITY.get_time - l_start)||'_so row add


la:'||c;
END;
/
select * from location_layer;
SELECT COUNT(*) FROM location_layer;
--TRUNCATE TABLE location_layer;

create or replace type varchar2_t is table of varchar2(255);


/
create or replace type varchar2_t2 is table of varchar2_t;
/
create or replace
FUNCTION upset_site(column_value varchar2_t2)
RETURN VARCHAR2
IS
outdata VARCHAR2(100);
TYPE t_site IS TABLE OF site%ROWTYPE;
l_tab t_site := t_site();
l_start NUMBER;
column_row varchar2_t;
c NUMBER := 0;
BEGIN
-- Populate collections.
l_start := DBMS_UTILITY.get_time;
for i in 1 .. column_value.count loop
column_row := column_value(i);
IF column_row(1) IS NULL THEN
EXIT;
end if;
UPDATE site
SET trung_tam =column_row(1),
dai_vt =column_row(2),
to_vt =column_row(3),
quan_huyen =column_row(4),
site =column_row(5)
--,last_update =TO_DATE(column_row(6),'yyyy/mm/dd hh24:mi:ss'),
--value=column_row(7)
WHERE site = column_row(5);

IF ( sql%rowcount = 0 ) THEN
l_tab.extend;
l_tab(l_tab.last).trung_tam:=column_row(1);
l_tab(l_tab.last).dai_vt:=column_row(2);
l_tab(l_tab.last).to_vt:=column_row(3);
l_tab(l_tab.last).quan_huyen:=column_row(4);
l_tab(l_tab.last).site:=column_row(5);
--l_tab(l_tab.last).last_update:=TO_DATE(column_row(6),'yyyy/mm/dd
hh24:mi:ss');
--l_tab(l_tab.last).value:=column_row(7);
c:=c+1;
END IF;
end loop;

FORALL i IN l_tab.first .. l_tab.last


INSERT INTO site VALUES l_tab(i);

RETURN 'thoi gian la'||(DBMS_UTILITY.get_time - l_start)||'_so row add


la:'||c;
END;
/
select * from location_layer;
SELECT COUNT(*) FROM location_layer;
--TRUNCATE TABLE location_layer;

select * from site;


select * from location_layer;

create or replace type varchar2_t is table of varchar2(255);


/
create or replace type varchar2_t2 is table of varchar2_t;
/
create or replace
FUNCTION add_site(column_value varchar2_t2)
RETURN VARCHAR2
IS
outdata VARCHAR2(100);
TYPE t_site IS TABLE OF site%ROWTYPE;
l_tab t_site := t_site();
l_start NUMBER;
column_row varchar2_t;
c NUMBER := 0;
BEGIN
-- Populate collections.
l_start := DBMS_UTILITY.get_time;
for i in 1 .. column_value.count loop
column_row := column_value(i);
IF column_row(1) IS NULL THEN
EXIT;
end if;
l_tab.extend;
l_tab(l_tab.last).trung_tam:=column_row(1);
l_tab(l_tab.last).dai_vt:=column_row(2);
l_tab(l_tab.last).to_vt:=column_row(3);
l_tab(l_tab.last).quan_huyen:=column_row(4);
l_tab(l_tab.last).site:=column_row(5);
c:=c+1;
end loop;

FORALL i IN l_tab.first .. l_tab.last


INSERT INTO site VALUES l_tab(i);

RETURN 'thoi gian la'||(DBMS_UTILITY.get_time - l_start)||'_so row add


la:'||c;
END;
/
SELECT COUNT(*) FROM site;
select * from site;
--TRUNCATE TABLE site;

SET SERVEROUTPUT ON
create or replace
FUNCTION insert_site(column_value varchar2_t2)
RETURN VARCHAR2
IS
outdata VARCHAR2(100);
TYPE t_site IS TABLE OF site%ROWTYPE;
l_tab t_site := t_site();
l_start NUMBER;
column_row varchar2_t;
c NUMBER := 0;
BEGIN
-- Populate collections.
l_start := DBMS_UTILITY.get_time;
for i in 1 .. column_value.count loop
column_row := column_value(i);
IF column_row(1) IS NULL THEN
EXIT;
end if;

l_tab.extend;
l_tab(l_tab.last).trung_tam:=column_row(1);
l_tab(l_tab.last).dai_vt:=column_row(2);
l_tab(l_tab.last).to_vt:=column_row(3);
l_tab(l_tab.last).quan_huyen:=column_row(4);
l_tab(l_tab.last).site:=column_row(5);
--l_tab(l_tab.last).last_update:=TO_DATE(column_row(6),'yyyy/mm/dd
hh24:mi:ss');
--l_tab(l_tab.last).value:=column_row(7);

end loop;

FORALL i IN l_tab.first .. l_tab.last


INSERT INTO site VALUES l_tab(i);

RETURN 'thoi gian la'||(DBMS_UTILITY.get_time - l_start)||'_table


last:'||l_tab.last;
END;
/

CREATE type tx_record as object (


i number,
n varchar2(30)
);

create or replace
FUNCTION insert_iot(arr_c varchar2_t2,arr_n float_t2)
RETURN VARCHAR2
IS
outdata VARCHAR2(100);
TYPE t_sensort IS TABLE OF sensort%ROWTYPE;
l_tab t_sensort := t_sensort();
stime NUMBER;
c_row varchar2_t;
n_row float_t;

BEGIN
-- Populate collections.
stime := DBMS_UTILITY.get_time;
for i in 1 .. arr_c.count loop
c_row := arr_c(i);
n_row := arr_n(i);
IF c_row(1) IS NULL THEN
EXIT;
end if;

l_tab.extend;
l_tab(l_tab.last).site:=c_row(1);
l_tab(l_tab.last).sensor:=c_row(2);
l_tab(l_tab.last).value:=n_row(1);
l_tab(l_tab.last).times:=n_row(2);
end loop;

FORALL i IN l_tab.first .. l_tab.last


INSERT INTO sensort VALUES l_tab(i);

RETURN 'thoi gian la'||(DBMS_UTILITY.get_time - stime)||'_table


len:'||arr_c.count;
END;
/

--SELECT * FROM list2g


create or replace
FUNCTION insert_bad(arr_c varchar2_t2,arr_n float_t2)
RETURN VARCHAR2
IS
outdata VARCHAR2(100);
TYPE t_list2g IS TABLE OF list2g%ROWTYPE;
l_tab t_list2g := t_list2g();
stime NUMBER;
c_row varchar2_t;
n_row float_t;

BEGIN
-- Populate collections.
stime := DBMS_UTILITY.get_time;
for i in 1 .. arr_c.count loop
c_row := arr_c(i);
n_row := arr_n(i);
IF c_row(1) IS NULL THEN
EXIT;
end if;

l_tab.extend;
l_tab(l_tab.last).cell:=c_row(1);
--l_tab(l_tab.last).sensor:=c_row(2);
--l_tab(l_tab.last).value:=n_row(1);
--l_tab(l_tab.last).times:=n_row(2);
end loop;

FORALL i IN l_tab.first .. l_tab.last


INSERT INTO list2g VALUES l_tab(i);

RETURN 'thoi gian la'||(DBMS_UTILITY.get_time - stime)||'_table len:';


END;
/

Вам также может понравиться