PLSQL Table

download PLSQL Table

of 1

Transcript of PLSQL Table

  • 8/14/2019 PLSQL Table

    1/1

    In the example below, 5000 part numbers and names are loaded into index-bytables. Then, all table elements are inserted into a database table twice. First,theyare inserted using a FOR loop, which completes in 32 seconds. Then, they arebulk-inserted using a FORALL statement, which completes in only 3 seconds.

    DECLARETYPE NumTab IS TABLE OF NUMBER(4) INDEX BY BINARY_INTEGER;TYPE NameTab IS TABLE OF CHAR(15) INDEX BY BINARY_INTEGER;pnums NumTab;pnames NameTab;t1 NUMBER(5);t2 NUMBER(5);t3 NUMBER(5);

    PROCEDURE get_time (t OUT NUMBER) ISBEGIN SELECT TO_CHAR(SYSDATE, SSSSS ) INTO t FROM dual; END;

    BEGINFOR j IN 1..5000 LOOP -- load index-by tables

    pnums(j) := j;pnames(j) := Part No. || TO_CHAR(j);

    END LOOP;get_time(t1);

    FOR i IN 1..5000 LOOP -- use FOR loopINSERT INTO parts VALUES (pnums(i), pnames(i));

    END LOOP;get_time(t2);

    FORALL i IN 1..5000 -- use FORALL statementINSERT INTO parts VALUES (pnums(i), pnames(i));get_time(t3);

    dbms_output.put_line( Execution Time (secs) ); dbms_output.put_line( --------------------- ); dbms_output.put_line( FOR loop: || TO_CHAR(t2 - t1)); dbms_output.put_line( FORALL: || TO_CHAR(t3 - t2));

    END;

    SQL> /Execution Time (secs)---------------------FOR loop: 32FORALL: 3PL/SQL procedure successfully completed.