Use dbms_sql.bind_array to bind array to a cursor
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> --
Related examples in the same category