Mega Code Archive

 
Categories / Oracle PLSQL / PL SQL
 

Fill table of custom type and use it in for loop to insert

SQL> SQL> CREATE TABLE MyTable (   2    num_col    NUMBER,   3    char_col   VARCHAR2(60)   4    ); Table created. SQL> SQL> DECLARE   2    TYPE t_Numbers IS TABLE OF MyTable.num_col%TYPE   3      INDEX BY BINARY_INTEGER;   4    TYPE t_Chars IS TABLE OF MyTable.char_col%TYPE   5      INDEX BY BINARY_INTEGER;   6    v_Numbers t_Numbers;   7    v_Chars t_Chars;   8  BEGIN   9    FOR v_Count IN 1..50 LOOP  10      v_Numbers(v_Count) := v_Count;  11      v_Chars(v_Count) := 'Row number ' || v_Count;  12    END LOOP;  13  14    FOR v_Count IN 1..50 LOOP  15      INSERT INTO MyTable VALUES  16        (v_Numbers(v_Count), v_Chars(v_Count));  17    END LOOP;  18  END;  19  / PL/SQL procedure successfully completed. SQL> SQL> select * from MyTable;  NUM_COL CHAR_COL -------- ------------------------------------------------------------     1.00 Row number 1     2.00 Row number 2     3.00 Row number 3     4.00 Row number 4     5.00 Row number 5     6.00 Row number 6     7.00 Row number 7     8.00 Row number 8     9.00 Row number 9    10.00 Row number 10    11.00 Row number 11  NUM_COL CHAR_COL -------- ------------------------------------------------------------    12.00 Row number 12    13.00 Row number 13    14.00 Row number 14    15.00 Row number 15    16.00 Row number 16    17.00 Row number 17    18.00 Row number 18    19.00 Row number 19    20.00 Row number 20    21.00 Row number 21    22.00 Row number 22  NUM_COL CHAR_COL -------- ------------------------------------------------------------    23.00 Row number 23    24.00 Row number 24    25.00 Row number 25    26.00 Row number 26    27.00 Row number 27    28.00 Row number 28    29.00 Row number 29    30.00 Row number 30    31.00 Row number 31    32.00 Row number 32    33.00 Row number 33  NUM_COL CHAR_COL -------- ------------------------------------------------------------    34.00 Row number 34    35.00 Row number 35    36.00 Row number 36    37.00 Row number 37    38.00 Row number 38    39.00 Row number 39    40.00 Row number 40    41.00 Row number 41    42.00 Row number 42    43.00 Row number 43    44.00 Row number 44  NUM_COL CHAR_COL -------- ------------------------------------------------------------    45.00 Row number 45    46.00 Row number 46    47.00 Row number 47    48.00 Row number 48    49.00 Row number 49    50.00 Row number 50 50 rows selected. SQL> SQL> SQL> SQL> drop table MyTable; Table dropped. SQL> SQL>