0% found this document useful (0 votes)
40 views5 pages

Varchar2: 'Thoi Gian La' ' - So Row Add La:'

The document contains Oracle PL/SQL code that defines functions for bulk inserting data into database tables from collections of data. It defines table types to hold collections of rows, functions that populate these collections from input parameters and insert the data using FORALL. The functions calculate performance metrics around bulk insert operations.

Uploaded by

duc
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
40 views5 pages

Varchar2: 'Thoi Gian La' ' - So Row Add La:'

The document contains Oracle PL/SQL code that defines functions for bulk inserting data into database tables from collections of data. It defines table types to hold collections of rows, functions that populate these collections from input parameters and insert the data using FORALL. The functions calculate performance metrics around bulk insert operations.

Uploaded by

duc
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 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;
/

You might also like