System Packages Oracle PLSQL

SQL>
SQL>
SQL> create table foo (
  2         a   integer,
  3         b   dec( 9, 2 ),
  4         c   character varying( 30 ),
  5         d   national char( 3 )
  6      )
  7  /
Table created.
SQL>      declare
  2        l_cursor number := dbms_sql.open_cursor;
  3        l_ignore number;
  4        l_num dbms_sql.number_table;
  5        l_var dbms_sql.varchar2_table;
  6      begin
  7        dbms_sql.parse( l_cursor,'insert into foo(b,c) values ( :n, :c )',dbms_sql.native );
  8        l_num(1) := 3;
  9        l_num(2) := 4;
 10        l_var(1) := 'Tom';
 11        l_var(2) := 'Joel';
 12        dbms_sql.bind_array( l_cursor, ':N', l_num );
 13        dbms_sql.bind_array( l_cursor, ':C', l_var );
 14        l_ignore := dbms_sql.execute( l_cursor );
 15        dbms_sql.close_cursor( l_cursor );
 16      end;
 17      /
PL/SQL procedure successfully completed.
SQL>      select * from foo;
         A          B C                              D
---------- ---------- ------------------------------ ---
                    3 Tom
                    4 Joel
2 rows selected.
SQL>
SQL> drop table foo;
Table dropped.
SQL>
SQL> --