Mega Code Archive

 
Categories / Oracle PLSQL / PL SQL
 

Extend once, outside the loop for better performance

SQL> SQL> create table department   2  ( dept_id       number(2),   3    dept_name     varchar2(14),   4    no_of_emps    varchar2(13)   5  )   6  / Table created. SQL> SQL> INSERT INTO department VALUES (10, 'ACCOUNTING', 'NEW YORK'); 1 row created. SQL> INSERT INTO department VALUES (20, 'RESEARCH',   'DALLAS'); 1 row created. SQL> INSERT INTO department VALUES (30, 'SALES',      'CHICAGO'); 1 row created. SQL> INSERT INTO department VALUES (40, 'OPERATIONS', 'BOSTON'); 1 row created. SQL> SQL> SQL> SET ECHO ON SQL> SET SERVEROUTPUT ON SQL> SQL> DECLARE   2      TYPE dept_id IS TABLE OF department.dept_id%TYPE;   3      TYPE dept_name IS TABLE OF department.dept_name%TYPE;   4   5      dept_ids dept_id;   6      dept_names dept_name;   7      inx1 PLS_INTEGER;   8  BEGIN   9      dept_ids := dept_id();  10      dept_names := dept_name();  11  12      dept_ids.extend(10);  13      dept_names.extend(10);  14  15      FOR inx1 IN 1..10 LOOP  16          dept_ids(inx1) := inx1 + 10;  17          dept_names(inx1) := 'Dept #' || TO_CHAR(inx1+10);  18      END LOOP;  19  20      FORALL x IN dept_ids.first..dept_ids.last  21      INSERT INTO department (dept_id, dept_name)  22      VALUES (dept_ids(x), dept_names(x));  23  END;  24  / PL/SQL procedure successfully completed. SQL> SQL> drop table department; Table dropped. SQL> SQL> --