Mega Code Archive

 
Categories / Oracle PLSQL / System Packages
 

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> --