Re: FW: bulk binds with OCI

[email protected] (Tim Bunce) Thu, 27 Mar 2003 22:40:00 +0000
Newsgroups perl.dbi.oracle-oci
Message-ID <[email protected]>
On Thu, Mar 27, 2003 at 02:08:36PM -0700, John Lien wrote:
> 
> So there might be a DBD::Oracle equivalent for this PL/SQL
> 
> FORALL idx IN 1..rec_count
>    INSERT INTO emp ( name_list(idx), title_list(idx) );
> 
> coming down the line that might be called like this:
> 
> $insert_sth->execute_array ( $aref_names, $aref_titles );

See the DBI docs for execute_array().

> That would be cool.  My server and I would be more indebted to you than we
> are already.

Well, I *plan* to do it, but it would happen *much* sooner if someone
waved a cheque book at me!

Tim.

> -jkl
> 
> -----Original Message-----
> From: Tim Bunce [mailto:[email protected]]
> Sent: Thursday, March 27, 2003 2:56 AM
> To: John Lien
> Cc: [email protected]
> Subject: Re: bulk binds with OCI
> 
> 
> On Wed, Mar 26, 2003 at 03:44:17PM -0700, John Lien wrote:
> >
> > Hi.
> > I've been using DBD::Oracle and DBI for a few years, but just discovered
> the
> > Oracle OCI module the other day.  Since then I've been poking around
> trying
> > to learn more about it.
> > My goal is to do bulk inserts from Perl.  (I dont believe you can do that
> > from DBD::Oracle - let me know if I'm wrong.  I have seen references in my
> > search results made to bind_param_array, but could never follow a thread
> to
> > an example.)
> > So, can I do bulk inserts with Oracle::OCI?
> 
> In theory, but it wouldn't be fun!
> 
> DBD::Oracle, via execute_array(), would be easier to patch.
> I may even get to it soonish, as hinted by this entry in the change
> log for the next DBI release:
> 
>   Added on-demand by-row data feed into execute_array() using code ref,
>     or statement handle. For example, to insert from a select:
>     $insert_sth->execute_array( { ArrayTupleFetch => $select_sth, ... } )
> 
> Tim.
>