Author: byterock Date: Tue Jul 1 11:24:07 2008 New Revision: 11475 Modified: dbd-oracle/trunk/Changes dbd-oracle/trunk/Oracle.pm
Log: pob updates (partial) for persistent lobs Modified: dbd-oracle/trunk/Changes ============================================================================== --- dbd-oracle/trunk/Changes (original) +++ dbd-oracle/trunk/Changes Tue Jul 1 11:24:07 2008 @@ -1,4 +1,5 @@ =head1 Changes in DBD-Oracle 1.22(svn rev xxxx) 2008 + Added fetch by piece for lobs, fixed persistent lobs and changed to pod to reflect the changes Added comment to POD on case sensitivity of ORACLE environment variables suggested by Gerhard Lausser Added patch to fix a number of harmless, but annoying, GCC warnings from Eric Simon Added (finally) ora_verbose for DBD only tracking from John Scoles and thanks to H.Merijn Brand Modified: dbd-oracle/trunk/Oracle.pm ============================================================================== --- dbd-oracle/trunk/Oracle.pm (original) +++ dbd-oracle/trunk/Oracle.pm Tue Jul 1 11:24:07 2008 @@ -1494,12 +1494,24 @@ =item ora_pers_lob -If 1 and your DBD::Oracle was built using OCI 10.2 and you are selecting against an Oralce 10R2 DB or later the L<Data Interface for Persistent LOBs> will be +If true the <Simple Fetch> method for the <Data Interface for Persistent LOBs> will be +used for LOBs. + +=ora_clbk_lob + +If true the <Piecewise Fetch with Callback> method for the <Data Interface for Persistent LOBs> will be +used for LOBs. + + +=ora_piece_lob + +If true the <Piecewise Fetch with Polling> method for the <Data Interface for Persistent LOBs> will be used for LOBs. =item ora_piece_size -This is the max piece size, in char for CLOBS, and bytes for BLOBS, for use with the <Data Interface for Persistent LOBs>. +This is the max piece size for the <Piecewise Fetch with Callback> and <Piecewise Fetch with Polling> methods, in chars for CLOBS, +and bytes for BLOBS. =item ora_check_sql @@ -2761,19 +2773,15 @@ =head1 Data Interface for Persistent LOBs -Oracle 10R2 and later extended the OCI API to work directly with LOB datatypes. In other words you can treat all LOB type data as if it was +Oracle 9iR1 and later extended the OCI API to work directly with LOB datatypes. In other words you can treat all LOB type data as if it was a LONG, LONG RAW, or VARCHAR2. So you can perform INSERT, UPDATE, fetch, bind, and define operations on LOBs using the same techniques you would use on other datatypes that store character or binary data. There are fewer round trips to the server as no 'LOB Locators' are -used, normally one can get an entire LOB is a single round trip. The data interface is supports LOBs of any size less than 2GB. Only -support for 'Selects' has been implemented using a piecewise callback fetch. +used, normally one can get an entire LOB is a single round trip. Depending on the version or Oracle you are using the interface supports LOBs +of any size up to 2GB. Presently only support for 'Selects' have been implemented. -=head2 Simple Usage +=head2 Simple Fetch -No special methods are needed to use this interface. To do a select statement all that is required import the 'ora_types' constants with; - - use DBD::Oracle qw(:ora_types); - -Next ensure the set statement handle's prepare method 'ora_pers_lob' attribute is set to '1', and set the 'ora_piece_size' to the size of the pieces +No special methods are needed to use this interface. Simply ensure the statement handle's prepare method 'ora_pers_lob' attribute is set to '1', and set the 'ora_piece_size' to the size of the pieces you want to return on the callback. Finally set the database handle's 'LongReadLen' attribute to a value that will be the larger than the expected size of the LOB. If the size of the lob exceeds this then DBD::Oracle will return a 'ORA-24345: A Truncation' error. To stop this set the handle's 'LongTruncOk' attribute to '1'.
