Moderator: Tim...
INSERT /*+ APPEND */ INTO b (id, a_id)
SELECT b_seq.nextval,
a.id
FROM a;CREATE TABLE a (
id NUMBER,
CONSTRAINT a_pk PRIMARY KEY (id)
);
INSERT /*+ APPEND */ INTO a
SELECT level
FROM dual
CONNECT BY level <= 500;
COMMIT;CREATE TABLE b (
id NUMBER,
a_id NUMBER,
small_number NUMBER(5),
big_number NUMBER,
short_string VARCHAR2(50),
long_string VARCHAR2(400),
random_date DATE,
CONSTRAINT b_pk PRIMARY KEY (id),
CONSTRAINT b_a_fk FOREIGN KEY (a_id) REFERENCES a(id)
);
CREATE SEQUENCE b_seq;CREATE OR REPLACE PROCEDURE populate_b AS
BEGIN
INSERT /*+ APPEND */ INTO b
SELECT b_seq.nextval AS id,
a.id,
TRUNC(DBMS_RANDOM.value(1,5)) AS small_number,
TRUNC(DBMS_RANDOM.value(100,10000)) AS big_number,
DBMS_RANDOM.string('L',TRUNC(DBMS_RANDOM.value(10,50))) AS short_string,
DBMS_RANDOM.string('L',TRUNC(DBMS_RANDOM.value(100,400))) AS long_string,
TRUNC(SYSDATE + DBMS_RANDOM.value(0,366)) AS created_date
FROM a;
COMMIT;
END;
/EXEC populate_b;
SELECT * FROM b ORDER BY id;CREATE OR REPLACE PROCEDURE populate_b AS
BEGIN
FOR i IN (SELECT id FROM a) LOOP
FOR j IN 1 .. 500 LOOP
INSERT INTO b
VALUES (
b_seq.nextval,
i.id,
TRUNC(DBMS_RANDOM.value(1,5)),
TRUNC(DBMS_RANDOM.value(100,10000)),
DBMS_RANDOM.string('L',TRUNC(DBMS_RANDOM.value(10,50))),
DBMS_RANDOM.string('L',TRUNC(DBMS_RANDOM.value(100,400))),
TRUNC(SYSDATE + DBMS_RANDOM.value(0,366))
);
END LOOP;
END LOOP;
COMMIT;
END;
/create table input1 (
ID1 Number primary key,
Detail1 Varchar2(25),
Detail2 Varchar2(25),
Detail3 Varchar2(25),
Detail4 Varchar2(25)
);create table input2 (
ID2 Number primary key,
Collect_date Timestamp(6),
Report Varchar2(100),
Valid CHAR(1)
);create table output (
ID Number primary key,
Input1_ID1 Number,
Input2_ID2 Number,
Comments Varchar2(100),
Result Varchar(20),
Expression Varchar(10)
);create or replace
PROCEDURE AddinOutput
(
in_Input1 in Input1.id%type,
in_Input2 in Input2.id%type
)as
pragma autonomous_transaction;
BEGIN
INSERT INTO Output
(ID,Input1_ID1,Input2_ID2,Comments,Result,Expression)
VALUES (Input1_ID_SEQ.nextval,in_Input1,in_Input2,'sdvbhdsbvhsbv','hbvhvdhvb','ugfhbchvbfd');
commit;
END;create or replace
PROCEDURE PopulateOutput
AS
cursor c1 is
select id1
from input1;
cursor c2 is
select id2
from input2;
BEGIN
FOR sinput1 in c1
LOOP
for elem in 1..500
loop
dbms_output.put_line(sinput1.id);
AddinOutput(sinput1.id);
end loop;
END LOOP;
NULL;
END Populateoutput;insert into input1 (ID1)
select level
from dual
connect by level <= 10000;
insert into input2 (ID2)
select level
from dual
connect by level <= 500;
commit;create sequence output_seq;create or replace procedure populate_output AS
begin
for i1 in (select * from input1) loop
for i2 in (select * from input2) loop
insert into output (id, input1_id1, input2_id2)
values (output_seq.nextval, i1.id1, i2.id2);
commit;
end loop;
end loop;
end;
/exec populate_output;
select count(*) from output;insert /*+ append */ into output (id, input1_id1, input2_id2)
select output_seq.nextval,
i1.id1,
i2.id2
from input1 i1
cross join input2 i2;
5000000 rows created.
SQL> commit;
SQL>Return to Oracle PL/SQL Development
Users browsing this forum: No registered users and 1 guest