Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Populate the UDT table - performance

MateuszHFeb 20 2018 — edited Feb 20 2018

Hello,

I defined the User-Defined Types - table like below:

CREATE OR REPLACE TYPE MYTABLE_O AS OBJECT(ID NUMBER(18,0),Name NVARCHAR2(100),GivenName NVARCHAR2(50) ... DateOfBirth DATE);

/

CREATE OR REPLACE TYPE MYTABLE AS TABLE OF MYTABLE_O;

Now i just want pass this table to stored procedure parameter, so i'm tryning populate values in that ways, unfortunately for 10.000 rows it takes a long time (about 21 minutes) .
Is there any more efficient way to populate a data?

set serveroutput on size unlimited;

set timing on

declare

tab MYTABLE := MYTABLE();

begin

    tab.extend;

    tab(tab.last) := MYTABLE_O(-1,'test1','test1','test1','test1',null,null,'test1','test1','pass',

    null,null,null,null,null,null,null,null,to_date('2018-01-01','YYYY-MM-DD'),null,null,null,null,null,null,null,null,null,null,null,null,null,

    null,null,null,null,null,null,100000065,null,'tt',null,null,null,null,null,null,null,null,null,null,1,null,null,null,null,null,null,null,null,null,null,

    null,null,null);

    tab.extend;

    tab(tab.last) := MYTABLE_O(-1,'test2','test2','test2','test2',null,null,'test2','test2','pass',

    null,null,null,null,null,null,null,null,to_date('2018-01-01','YYYY-MM-DD'),null,null,null,null,null,null,null,null,null,null,null,null,null,

    null,null,null,null,null,null,100000065,null,'tt',null,null,null,null,null,null,null,null,null,null,1,null,null,null,null,null,null,null,null,null,null,

    null,null,null);

     ....

    /*  10 000 *./

    tab.extend;

    tab(tab.last) := MYTABLE_O(-1,'test10000','test10000','test10000','test10000',null,null,'test10000','test10000','pass',

    null,null,null,null,null,null,null,null,to_date('2018-01-01','YYYY-MM-DD'),null,null,null,null,null,null,null,null,null,null,null,null,null,

    null,null,null,null,null,null,100000065,null,'tt',null,null,null,null,null,null,null,null,null,null,1,null,null,null,null,null,null,null,null,null,null,

    null,null,null);

 

end;

/

Thanks in advance.

m.

This post has been answered by BEDE on Feb 20 2018
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Mar 20 2018
Added on Feb 20 2018
15 comments
773 views