Author: byterock
Date: Thu Nov  6 12:12:08 2008
New Revision: 12054

Modified:
   dbd-oracle/trunk/Changes
   dbd-oracle/trunk/Oracle.pm

Log:
 Update to POD from Chris Underhill
  

Modified: dbd-oracle/trunk/Changes
==============================================================================
--- dbd-oracle/trunk/Changes    (original)
+++ dbd-oracle/trunk/Changes    Thu Nov  6 12:12:08 2008
@@ -1,4 +1,5 @@
 =head1 Changes in DBD-Oracle 1.23(svn rev #####)
+  Update to POD from Chris Underhill
   Added README.win64.txt with content from Alex Buttery
   Fix for rt.cpan.org Ticket #=21920 Bug with Oracle DBD for Mac OS X Instant 
Client From boingolover
   Added a few more constants to get rid of magic numbers from John Scoles

Modified: dbd-oracle/trunk/Oracle.pm
==============================================================================
--- dbd-oracle/trunk/Oracle.pm  (original)
+++ dbd-oracle/trunk/Oracle.pm  Thu Nov  6 12:12:08 2008
@@ -3568,7 +3568,9 @@
 
    my $chunk_size = 1034;   # Arbitrary chunk size, for example
    my $offset = 1;   # Offsets start at 1, not 0
-   while( my $data = $dbh->ora_lob_read( $char_locator, $offset, $chunk_size ) 
) {
+   while(1) {
+      my $data = $dbh->ora_lob_read( $char_locator, $offset, $chunk_size );
+      last unless length $data;
       print STDOUT $data;
       $offset += $chunk_size;
    }
@@ -3579,6 +3581,18 @@
 the select statement does not require the "FOR UPDATE"
 clause.
 
+A word of catution when using the data retruned from an ora_lob_read in a 
condtional statement. 
+for example if the code below;
+
+   while( my $data = $dbh->ora_lob_read( $char_locator, $offset, $chunk_size ) 
) {
+        print STDOUT $data;
+        $offset += $chunk_size;
+   }
+   
+was used with a chunk size of 4096 against a blob that requires more than 1 
chunk to return 
+the data and the last chunk is one byte long and contains a zero (ASCII 48) 
you will miss this last byte
+as $data will contain 0 which PERL will see as false and not print it out.
+
 =head3 Example: Truncating existing large data
 
 In this example, we truncate the data already present in a

Reply via email to