Mega Code Archive

 
Categories / Oracle PLSQL Tutorial / Collections
 

Forall in value of table of type

SQL> SQL> CREATE TABLE employee (   2     employee_id NUMBER,   3     last_name VARCHAR2(30),   4     first_name VARCHAR2(30),   5     salary NUMBER); Table created. SQL> INSERT INTO employee (employee_id, last_name, first_name, salary)VALUES (1, 'G', 'J', 100000); 1 row created. SQL> SQL> INSERT INTO employee (employee_id, last_name, first_name, salary)VALUES (2, 'G', 'H', 100000); 1 row created. SQL> SQL> SELECT employee_id FROM employee  WHERE salary = 10000; no rows selected SQL> SQL> DECLARE   2     TYPE employee_aat IS TABLE OF employee.employee_id%TYPE INDEX BY PLS_INTEGER;   3   4     l_employees employee_aat;   5   6     TYPE indices_aat IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER;   7   8     l_employee_indices   indices_aat;   9  BEGIN  10     l_employees (-77) := 7820;  11     l_employees (13067) := 7799;  12     l_employees (99999999) := 7369;  13     --  14     l_employee_indices (100) := -77;  15     l_employee_indices (200) := 99999999;  16     --  17     FORALL l_index IN VALUES OF l_employee_indices  18        UPDATE employee SET salary = 10000  19         WHERE employee_id = l_employees (l_index);  20  END;  21  / PL/SQL procedure successfully completed. SQL> SQL> SELECT employee_id FROM employee  WHERE salary = 10000; no rows selected SQL> SQL> drop table employee; Table dropped. SQL>