Hi,

I need a bit of a help with DBI/DBD combo. I have tried to narrow it
down and came up with the following.

Here is the problem summary:

Versions:
        Perl: 5.6.1
        DBI: 1.32
        DBD-Oracle: 1.12
        Operating System: Solaris 5.8
        Oracle version: 8.1.7

Description:
        When DBI/DBD executes a PL/SQL stored procedure which
        returns a reference cursor, and that cursor has been touched 
        by the procedure, the whole works fine. However, if the 
        cursor was untouched, for example if there is a piece of code 
        that raises an exception before the cursor was used in the 
        procedure, the program dumps core. The error message is:

OCIErrorGet after OCIAttrGet OCI_ATTR_PARAM_COUNT (er1:ok): -1, 24338:
ORA-24338: statement handle not executed
!! ERROR: 24338 'ORA-24338: statement handle not executed (DBD ERROR:
OCIAttrGet OCI_ATTR_PARAM_COUNT)'
DBD::Oracle::st execute failed: ORA-24338: statement handle not executed
(DBD ERROR: OCIAttrGet OCI_ATTR_PARAM_COUNT) at ./bug.pl line 40.

        Note that the execution is successful also if the cursor
        statement did not have any rows returned. The program fails 
        ONLY if the cursor is untouched.

Attachments:

        bug.sql - creates the example tables and packages (run 'sqlplus
user/password @bug.sql' to install).

        bug.pl - the sample perl script (use './bug.pl MR' for success
or './bug.pl GG' to get it to dump core).

        DBImake.log(*) - verbose log of the DBI-1.32 make and
installation

        DBDmake.log(*) - verbose log of the DBD-1.12-Oracle make and
installation

        success.log - verbose log of a successful execution of bug.pl

        failure.log - verbose log of a failed execution (with core dump)

        Unfortunately I was unable to recompile everything to 
        convince gdb backtrace to produce any sane output. All I have 
        is number of hex pointers... Sorry.

        (*) Due to list post size limit requirements I can't attach
these, but will be happy to e-mail if needed.

The complicating factor is that I am not allowed to modify
the stored procedure code to ensure the cursor gets touched 
every time. That would be the most obvious solution. The 
reason for this is that the perl code we are executing is 
used to performance test some 15 complex functions in a 
package, so any modification would cause lengthy regression testing.

I have seen only one reference to this issue on the Net (and
that appears to have been unanswered). I would appreciate any 
feedback from developers.

Thanks and regards,

Srdjan Nikolic
Senior Performance Analyst
Telstra Corporation

== bug.sql
========================================================================
======
DROP TABLE DBI_BUG;
CREATE TABLE DBI_BUG ( 
  COL1  VARCHAR2 (10), 
  COL2  VARCHAR2 (10), 
  COL3  VARCHAR2 (10));
INSERT INTO DBI_BUG VALUES ('MR','WILLIAM','RIKER');
INSERT INTO DBI_BUG VALUES ('MR','JEAN-LUC','PICARD');
INSERT INTO DBI_BUG VALUES ('MS','DEANNA','TROI');
INSERT INTO DBI_BUG VALUES ('MISS','BEVERLY','CRUSHER');

CREATE OR REPLACE PACKAGE BUG_PACKAGE AS
        TYPE T_CURSOR IS REF CURSOR;

        FUNCTION BUG_FUNCTION (
                IN_COL1                 IN      DBI_BUG.COL1%TYPE,
                F_CURSOR                OUT     BUG_PACKAGE.T_CURSOR
        ) RETURN NUMBER;

END BUG_PACKAGE;
/
CREATE OR REPLACE PACKAGE BODY BUG_PACKAGE IS

        FUNCTION BUG_FUNCTION (
                IN_COL1                 IN      DBI_BUG.COL1%TYPE,
                F_CURSOR                OUT     BUG_PACKAGE.T_CURSOR
        ) RETURN NUMBER IS

        INVALID_QUERY_DATA EXCEPTION;

        ROWCOUNT NUMBER;
        
        BEGIN
        
        IF IN_COL1 = '' THEN
           RAISE INVALID_QUERY_DATA;
        END IF;
        
        SELECT COUNT(*)
        INTO ROWCOUNT
        FROM DBI_BUG
        WHERE COL1 = IN_COL1;
        
        IF ROWCOUNT = 0 THEN
           RAISE NO_DATA_FOUND;
        END IF;
        
                OPEN F_CURSOR FOR
                         SELECT COL2, COL3
                                FROM DBI_BUG
                                WHERE COL1 = IN_COL1;

                RETURN 0;

        EXCEPTION
                WHEN INVALID_QUERY_DATA
                THEN
                        RETURN -2;
        
                WHEN NO_DATA_FOUND
                THEN
                        RETURN -1;              
                
                        
        END BUG_FUNCTION;
        
END BUG_PACKAGE;
/

EXIT
== bug.pl
========================================================================
======
#!/usr/local/bin/perl -w
use strict;

use DBI qw(:sql_types);                         # Perl DBI Database
Access module
use DBD::Oracle qw(:ora_types);         # Perl Oracle access module

# Database access variables
my $dbh;                                # Database handle
my $sth;                                # Statement handle
my $csr;                                # Cursor reference
my @row;                                # Returned data row

### DATABASE CONNECTIVITY PARAMETERS
my $OraInst = 'dbi:Oracle:DBA8';
my $UserName = 'c828764';
my $Password = '*********';
my %Options = (RaiseError=>1, AutoCommit=>0);

my $InParam= $ARGV[0];

my $ErrCode;

DBI->trace(5);

$dbh = DBI->connect( $OraInst, $UserName, $Password, \%Options)
                || die "Database connection can't be made:
".$DBI::errstr."\n";

$sth = $dbh->prepare('BEGIN :1 := BUG_PACKAGE.BUG_FUNCTION(:2,:3);
END;')
                || die "Cannot prepare ".$DBI::errstr."\n";

$sth->bind_param_inout(1, \$ErrCode, 0)
                || die "Cannot bind the OUT parameter
".$DBI::errstr."\n";

$sth->bind_param(2, $InParam)
                || die "Cannot bind the IN parameter
".$DBI::errstr."\n";

$sth->bind_param_inout(3, \$csr, 0, { ora_type => ORA_RSET })
                || die "Cannot bind the CURSOR parameter
".$DBI::errstr."\n";

$sth->execute()
                || die "Cannot execute: ".$DBI::errstr."\n";

print (":1 = $ErrCode, :2 = $InParam, :3 = $csr\n");

while(@row = $csr->fetchrow_array) {
        print (join(',', @row)."\n");
}

$sth->finish
        || die "Cannot finish the execution: ".$DBI::errstr."\n";

$dbh->disconnect
        || warn "Database disconnect failed: $DBI::errstr\n";

== failure.log
========================================================================
======
    DBI 1.32-nothread dispatch trace level set to 5
    -> DBI->connect(dbi:Oracle:DBA8, c828764, ****, HASH(0xf80f4))
    -> DBI->install_driver(Oracle) for solaris perl=5.006001 pid=24471
ruid=2016 euid=2016
       install_driver: DBD::Oracle version 1.12 loaded from
/usr/local/lib/perl5/site_perl/5.6.1/sun4-solaris/DBD/Oracle.pm
    New DBI::dr (for DBD::Oracle::dr, parent=, id=)
    dbih_setup_handle(DBI::dr=HASH(0x1a99fc)=>DBI::dr=HASH(0x1e804c),
DBD::Oracle::dr, 0, Null!)
    dbih_make_com(Null!, DBD::Oracle::dr, 88) thr#0
    dbih_setup_attrib(DBI::dr=HASH(0x1e804c), Err, Null!)
SCALAR(0x16dea8) (already defined)
    dbih_setup_attrib(DBI::dr=HASH(0x1e804c), State, Null!)
SCALAR(0x1ab420) (already defined)
    dbih_setup_attrib(DBI::dr=HASH(0x1e804c), Errstr, Null!)
SCALAR(0x16de90) (already defined)
    dbih_setup_attrib(DBI::dr=HASH(0x1e804c), Debug, Null!) 0 (already
defined)
    dbih_setup_attrib(DBI::dr=HASH(0x1e804c), FetchHashKeyName, Null!)
'NAME' (already defined)
    <- install_driver= DBI::dr=HASH(0x1a99fc)
    -> connect for DBD::Oracle::dr (DBI::dr=HASH(0x1a99fc)~0x1e804c
'DBA8' 'c828764' **** HASH(0x1867d4))
    New DBI::db (for DBD::Oracle::db, parent=DBI::dr=HASH(0x1e804c),
id=)
    dbih_setup_handle(DBI::db=HASH(0x1e73f4)=>DBI::db=HASH(0x1e7370),
DBD::Oracle::db, 1a672c, Null!)
    dbih_make_com(DBI::dr=HASH(0x1e804c), DBD::Oracle::db, 116) thr#0
    dbih_setup_attrib(DBI::db=HASH(0x1e7370), Err,
DBI::dr=HASH(0x1e804c)) SCALAR(0x16dea8) (already defined)
    dbih_setup_attrib(DBI::db=HASH(0x1e7370), State,
DBI::dr=HASH(0x1e804c)) SCALAR(0x1ab420) (already defined)
    dbih_setup_attrib(DBI::db=HASH(0x1e7370), Errstr,
DBI::dr=HASH(0x1e804c)) SCALAR(0x16de90) (already defined)
    dbih_setup_attrib(DBI::db=HASH(0x1e7370), Debug,
DBI::dr=HASH(0x1e804c)) 0 (already defined)
    dbih_setup_attrib(DBI::db=HASH(0x1e7370), FetchHashKeyName,
DBI::dr=HASH(0x1e804c)) 'NAME' (already defined)
    dbih_setup_attrib(DBI::db=HASH(0x1e7370), HandleError,
DBI::dr=HASH(0x1e804c)) undef (not defined)
    <- connect= DBI::db=HASH(0x1e73f4) at
/usr/local/lib/perl5/site_perl/5.6.1/sun4-solaris/DBI.pm line 513 via
./bug.pl line 25
    -> STORE for DBD::Oracle::db (DBI::db=HASH(0x1e7370)~INNER
'RaiseError' 1)
    STORE DBI::db=HASH(0x1e7370) 'RaiseError' => 1
    <- STORE= 1 at
/usr/local/lib/perl5/site_perl/5.6.1/sun4-solaris/DBI.pm line 555 via
./bug.pl line 25
    -> STORE for DBD::Oracle::db (DBI::db=HASH(0x1e7370)~INNER
'PrintError' 1)
    STORE DBI::db=HASH(0x1e7370) 'PrintError' => 1
    <- STORE= 1 at
/usr/local/lib/perl5/site_perl/5.6.1/sun4-solaris/DBI.pm line 555 via
./bug.pl line 25
    -> STORE for DBD::Oracle::db (DBI::db=HASH(0x1e7370)~INNER
'AutoCommit' 0)
    <- STORE= 1 at
/usr/local/lib/perl5/site_perl/5.6.1/sun4-solaris/DBI.pm line 555 via
./bug.pl line 25
    <- connect= DBI::db=HASH(0x1e73f4)
    -> prepare for DBD::Oracle::db (DBI::db=HASH(0x1e73f4)~0x1e7370
'BEGIN :1 := BUG_PACKAGE.BUG_FUNCTION(:2,:3); END;')
    New DBI::st (for DBD::Oracle::st, parent=DBI::db=HASH(0x1e7370),
id=)
    dbih_setup_handle(DBI::st=HASH(0x1e8040)=>DBI::st=HASH(0x1867d4),
DBD::Oracle::st, 1e807c, Null!)
    dbih_make_com(DBI::db=HASH(0x1e7370), DBD::Oracle::st, 208) thr#0
    dbih_setup_attrib(DBI::st=HASH(0x1867d4), Err,
DBI::db=HASH(0x1e7370)) SCALAR(0x16dea8) (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x1867d4), State,
DBI::db=HASH(0x1e7370)) SCALAR(0x1ab420) (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x1867d4), Errstr,
DBI::db=HASH(0x1e7370)) SCALAR(0x16de90) (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x1867d4), Debug,
DBI::db=HASH(0x1e7370)) 0 (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x1867d4), FetchHashKeyName,
DBI::db=HASH(0x1e7370)) 'NAME' (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x1867d4), HandleError,
DBI::db=HASH(0x1e7370)) undef (not defined)
    dbd_preparse scanned 3 distinct placeholders
    dbd_st_prepare'd sql BEGIN
    dbd_describe skipped for BEGIN
    <- prepare= DBI::st=HASH(0x1e8040) at ./bug.pl line 28
    -> bind_param_inout for DBD::Oracle::st
(DBI::st=HASH(0x1e8040)~0x1867d4 1 SCALAR(0xf8154) 0)
       bind :p1 <== undef (type 0, inout 0xf8154, maxlen 0)
       bind :p1 <== undef (NULL, size 0/0/0, ptype 4, otype 1, inout)
       bind :p1 <== '' (size 0/28, otype 1, indp -1, at_exec 1)
       bind :p1 done with ftype 1
    <- bind_param_inout= 1 at ./bug.pl line 31
    -> bind_param for DBD::Oracle::st (DBI::st=HASH(0x1e8040)~0x1867d4 2
'GG')
       bind :p2 <== 'GG' (type 0)
       bind :p2 <== 'GG' (size 2/3/0, ptype 4, otype 1)
       bind :p2 <== 'GG' (size 2/2, otype 1, indp 0, at_exec 1)
       bind :p2 done with ftype 1
    <- bind_param= 1 at ./bug.pl line 34
    -> bind_param_inout for DBD::Oracle::st
(DBI::st=HASH(0x1e8040)~0x1867d4 3 SCALAR(0xfb358) 0 HASH(0x1e71f0))
       bind :p3 <== undef (type 0, inout 0xfb358, maxlen 0, attribs:
HASH(0x1e71f0))
       bind :p3 done with ftype 116
    <- bind_param_inout= 1 at ./bug.pl line 37
    -> execute for DBD::Oracle::st (DBI::st=HASH(0x1e8040)~0x1867d4)
    dbd_st_execute BEGIN (out2, lob0)...
       bind :p3 - allocating new sth...
    <- FETCH= 'DBD::Oracle::db' ('ImplementorClass' from cache) at
/usr/local/lib/perl5/site_perl/5.6.1/sun4-solaris/DBI.pm line 1001 via
./bug.pl line 40
    New DBI::st (for DBD::Oracle::st, parent=DBI::db=HASH(0x1e73f4),
id=)
    dbih_setup_handle(DBI::st=HASH(0x1e7394)=>DBI::st=HASH(0x1e71f0),
DBD::Oracle::st, 1e801c, Null!)
    dbih_make_com(DBI::db=HASH(0x1e7370), DBD::Oracle::st, 208) thr#0
    dbih_setup_attrib(DBI::st=HASH(0x1e71f0), Err,
DBI::db=HASH(0x1e7370)) SCALAR(0x16dea8) (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x1e71f0), State,
DBI::db=HASH(0x1e7370)) SCALAR(0x1ab420) (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x1e71f0), Errstr,
DBI::db=HASH(0x1e7370)) SCALAR(0x16de90) (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x1e71f0), Debug,
DBI::db=HASH(0x1e7370)) 0 (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x1e71f0), FetchHashKeyName,
DBI::db=HASH(0x1e7370)) 'NAME' (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x1e71f0), HandleError,
DBI::db=HASH(0x1e7370)) undef (not defined)
       bind :p3 - allocated DBI::st=HASH(0x1e7394)...
      with :p1 = '' (len 0(0)/28, indp -1, otype 1, ptype 6)
       in  ':p2' [0,0]: len  2, ind 0
       out ':p1' [0,0]: alen 29, piece 0
    dbd_st_execute BEGIN returned (SUCCESS, rpc1, fn34, out2)
       bind :p3 - initialising new DBI::st=HASH(0x1e7394) for cursor
0x1f35f0...
    dbd_describe SELECT (implicit, lb 80)...
    OCIErrorGet after OCIAttrGet OCI_ATTR_PARAM_COUNT (er1:ok): -1,
24338: ORA-24338: statement handle not executed

    !! ERROR: 24338 'ORA-24338: statement handle not executed (DBD
ERROR: OCIAttrGet OCI_ATTR_PARAM_COUNT)'
    <- execute= undef at ./bug.pl line 40
DBD::Oracle::st execute failed: ORA-24338: statement handle not executed
(DBD ERROR: OCIAttrGet OCI_ATTR_PARAM_COUNT) at ./bug.pl line 40.
DBD::Oracle::st execute failed: ORA-24338: statement handle not executed
(DBD ERROR: OCIAttrGet OCI_ATTR_PARAM_COUNT) at ./bug.pl line 40.
    <> DESTROY ignored for outer handle DBI::db=HASH(0x1e73f4) (inner
DBI::db=HASH(0x1e7370))
    <> DESTROY ignored for outer handle DBI::st=HASH(0x1e8040) (inner
DBI::st=HASH(0x1867d4))
    -> DESTROY for DBD::Oracle::st (DBI::st=HASH(0x1867d4)~INNER)
    <> DESTROY ignored for outer handle DBI::st=HASH(0x1e7394) (inner
DBI::st=HASH(0x1e71f0))
    -> DESTROY for DBD::Oracle::st (DBI::st=HASH(0x1e71f0)~INNER)
== success.log
========================================================================
======
    DBI 1.32-nothread dispatch trace level set to 5
    -> DBI->connect(dbi:Oracle:DBA8, c828764, ****, HASH(0xf80f4))
    -> DBI->install_driver(Oracle) for solaris perl=5.006001 pid=24468
ruid=2016 euid=2016
       install_driver: DBD::Oracle version 1.12 loaded from
/usr/local/lib/perl5/site_perl/5.6.1/sun4-solaris/DBD/Oracle.pm
    New DBI::dr (for DBD::Oracle::dr, parent=, id=)
    dbih_setup_handle(DBI::dr=HASH(0x1a99fc)=>DBI::dr=HASH(0x1e804c),
DBD::Oracle::dr, 0, Null!)
    dbih_make_com(Null!, DBD::Oracle::dr, 88) thr#0
    dbih_setup_attrib(DBI::dr=HASH(0x1e804c), Err, Null!)
SCALAR(0x16dea8) (already defined)
    dbih_setup_attrib(DBI::dr=HASH(0x1e804c), State, Null!)
SCALAR(0x1ab420) (already defined)
    dbih_setup_attrib(DBI::dr=HASH(0x1e804c), Errstr, Null!)
SCALAR(0x16de90) (already defined)
    dbih_setup_attrib(DBI::dr=HASH(0x1e804c), Debug, Null!) 0 (already
defined)
    dbih_setup_attrib(DBI::dr=HASH(0x1e804c), FetchHashKeyName, Null!)
'NAME' (already defined)
    <- install_driver= DBI::dr=HASH(0x1a99fc)
    -> connect for DBD::Oracle::dr (DBI::dr=HASH(0x1a99fc)~0x1e804c
'DBA8' 'c828764' **** HASH(0x1867d4))
    New DBI::db (for DBD::Oracle::db, parent=DBI::dr=HASH(0x1e804c),
id=)
    dbih_setup_handle(DBI::db=HASH(0x1e73f4)=>DBI::db=HASH(0x1e7370),
DBD::Oracle::db, 1a672c, Null!)
    dbih_make_com(DBI::dr=HASH(0x1e804c), DBD::Oracle::db, 116) thr#0
    dbih_setup_attrib(DBI::db=HASH(0x1e7370), Err,
DBI::dr=HASH(0x1e804c)) SCALAR(0x16dea8) (already defined)
    dbih_setup_attrib(DBI::db=HASH(0x1e7370), State,
DBI::dr=HASH(0x1e804c)) SCALAR(0x1ab420) (already defined)
    dbih_setup_attrib(DBI::db=HASH(0x1e7370), Errstr,
DBI::dr=HASH(0x1e804c)) SCALAR(0x16de90) (already defined)
    dbih_setup_attrib(DBI::db=HASH(0x1e7370), Debug,
DBI::dr=HASH(0x1e804c)) 0 (already defined)
    dbih_setup_attrib(DBI::db=HASH(0x1e7370), FetchHashKeyName,
DBI::dr=HASH(0x1e804c)) 'NAME' (already defined)
    dbih_setup_attrib(DBI::db=HASH(0x1e7370), HandleError,
DBI::dr=HASH(0x1e804c)) undef (not defined)
    <- connect= DBI::db=HASH(0x1e73f4) at
/usr/local/lib/perl5/site_perl/5.6.1/sun4-solaris/DBI.pm line 513 via
./bug.pl line 25
    -> STORE for DBD::Oracle::db (DBI::db=HASH(0x1e7370)~INNER
'RaiseError' 1)
    STORE DBI::db=HASH(0x1e7370) 'RaiseError' => 1
    <- STORE= 1 at
/usr/local/lib/perl5/site_perl/5.6.1/sun4-solaris/DBI.pm line 555 via
./bug.pl line 25
    -> STORE for DBD::Oracle::db (DBI::db=HASH(0x1e7370)~INNER
'PrintError' 1)
    STORE DBI::db=HASH(0x1e7370) 'PrintError' => 1
    <- STORE= 1 at
/usr/local/lib/perl5/site_perl/5.6.1/sun4-solaris/DBI.pm line 555 via
./bug.pl line 25
    -> STORE for DBD::Oracle::db (DBI::db=HASH(0x1e7370)~INNER
'AutoCommit' 0)
    <- STORE= 1 at
/usr/local/lib/perl5/site_perl/5.6.1/sun4-solaris/DBI.pm line 555 via
./bug.pl line 25
    <- connect= DBI::db=HASH(0x1e73f4)
    -> prepare for DBD::Oracle::db (DBI::db=HASH(0x1e73f4)~0x1e7370
'BEGIN :1 := BUG_PACKAGE.BUG_FUNCTION(:2,:3); END;')
    New DBI::st (for DBD::Oracle::st, parent=DBI::db=HASH(0x1e7370),
id=)
    dbih_setup_handle(DBI::st=HASH(0x1e8040)=>DBI::st=HASH(0x1867d4),
DBD::Oracle::st, 1e807c, Null!)
    dbih_make_com(DBI::db=HASH(0x1e7370), DBD::Oracle::st, 208) thr#0
    dbih_setup_attrib(DBI::st=HASH(0x1867d4), Err,
DBI::db=HASH(0x1e7370)) SCALAR(0x16dea8) (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x1867d4), State,
DBI::db=HASH(0x1e7370)) SCALAR(0x1ab420) (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x1867d4), Errstr,
DBI::db=HASH(0x1e7370)) SCALAR(0x16de90) (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x1867d4), Debug,
DBI::db=HASH(0x1e7370)) 0 (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x1867d4), FetchHashKeyName,
DBI::db=HASH(0x1e7370)) 'NAME' (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x1867d4), HandleError,
DBI::db=HASH(0x1e7370)) undef (not defined)
    dbd_preparse scanned 3 distinct placeholders
    dbd_st_prepare'd sql BEGIN
    dbd_describe skipped for BEGIN
    <- prepare= DBI::st=HASH(0x1e8040) at ./bug.pl line 28
    -> bind_param_inout for DBD::Oracle::st
(DBI::st=HASH(0x1e8040)~0x1867d4 1 SCALAR(0xf8154) 0)
       bind :p1 <== undef (type 0, inout 0xf8154, maxlen 0)
       bind :p1 <== undef (NULL, size 0/0/0, ptype 4, otype 1, inout)
       bind :p1 <== '' (size 0/28, otype 1, indp -1, at_exec 1)
       bind :p1 done with ftype 1
    <- bind_param_inout= 1 at ./bug.pl line 31
    -> bind_param for DBD::Oracle::st (DBI::st=HASH(0x1e8040)~0x1867d4 2
'MR')
       bind :p2 <== 'MR' (type 0)
       bind :p2 <== 'MR' (size 2/3/0, ptype 4, otype 1)
       bind :p2 <== 'MR' (size 2/2, otype 1, indp 0, at_exec 1)
       bind :p2 done with ftype 1
    <- bind_param= 1 at ./bug.pl line 34
    -> bind_param_inout for DBD::Oracle::st
(DBI::st=HASH(0x1e8040)~0x1867d4 3 SCALAR(0xfb358) 0 HASH(0x1e71f0))
       bind :p3 <== undef (type 0, inout 0xfb358, maxlen 0, attribs:
HASH(0x1e71f0))
       bind :p3 done with ftype 116
    <- bind_param_inout= 1 at ./bug.pl line 37
    -> execute for DBD::Oracle::st (DBI::st=HASH(0x1e8040)~0x1867d4)
    dbd_st_execute BEGIN (out2, lob0)...
       bind :p3 - allocating new sth...
    <- FETCH= 'DBD::Oracle::db' ('ImplementorClass' from cache) at
/usr/local/lib/perl5/site_perl/5.6.1/sun4-solaris/DBI.pm line 1001 via
./bug.pl line 40
    New DBI::st (for DBD::Oracle::st, parent=DBI::db=HASH(0x1e73f4),
id=)
    dbih_setup_handle(DBI::st=HASH(0x1e7394)=>DBI::st=HASH(0x1e71f0),
DBD::Oracle::st, 1e801c, Null!)
    dbih_make_com(DBI::db=HASH(0x1e7370), DBD::Oracle::st, 208) thr#0
    dbih_setup_attrib(DBI::st=HASH(0x1e71f0), Err,
DBI::db=HASH(0x1e7370)) SCALAR(0x16dea8) (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x1e71f0), State,
DBI::db=HASH(0x1e7370)) SCALAR(0x1ab420) (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x1e71f0), Errstr,
DBI::db=HASH(0x1e7370)) SCALAR(0x16de90) (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x1e71f0), Debug,
DBI::db=HASH(0x1e7370)) 0 (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x1e71f0), FetchHashKeyName,
DBI::db=HASH(0x1e7370)) 'NAME' (already defined)
    dbih_setup_attrib(DBI::st=HASH(0x1e71f0), HandleError,
DBI::db=HASH(0x1e7370)) undef (not defined)
       bind :p3 - allocated DBI::st=HASH(0x1e7394)...
      with :p1 = '' (len 0(0)/28, indp -1, otype 1, ptype 6)
       in  ':p2' [0,0]: len  2, ind 0
       out ':p1' [0,0]: alen 29, piece 0
    dbd_st_execute BEGIN returned (SUCCESS, rpc1, fn34, out2)
       bind :p3 - initialising new DBI::st=HASH(0x1e7394) for cursor
0x1f35f0...
    dbd_describe SELECT (implicit, lb 80)...
    fbh 1: 'COL2'       NULLable, otype   1->  5, dbsize 10/11, p10.s0
    fbh 2: 'COL3'       NULLable, otype   1->  5, dbsize 10/11, p10.s0
    dbd_describe'd 2 columns (row bytes: 20 max, 20 est avg, cache: 384)
       out :p1 = '0' (arcode 0, ind 0, len 1)
    <- execute= 1 at ./bug.pl line 40
    -> fetchrow_array for DBD::Oracle::st
(DBI::st=HASH(0x1e7394)~0x1e71f0)
    dbd_st_fetch 2 fields...
    dbih_setup_fbav for 2 fields => 0x1e813c
    dbd_st_fetch 2 fields SUCCESS
        0 (rc=0): 'WILLIAM'
        1 (rc=0): 'RIKER'
    <- fetchrow_array= ( 'WILLIAM' 'RIKER' ) [2 items] row1 at ./bug.pl
line 45
    -> fetchrow_array for DBD::Oracle::st
(DBI::st=HASH(0x1e7394)~0x1e71f0)
    dbd_st_fetch 2 fields...
    dbd_st_fetch 2 fields SUCCESS
        0 (rc=0): 'JEAN-LUC'
        1 (rc=0): 'PICARD'
    <- fetchrow_array= ( 'JEAN-LUC' 'PICARD' ) [2 items] row2 at
./bug.pl line 45
    -> fetchrow_array for DBD::Oracle::st
(DBI::st=HASH(0x1e7394)~0x1e71f0)
    dbd_st_fetch 2 fields...
    dbd_st_fetch no-more-data
    <- fetchrow_array= ( ) [0 items] row2 at ./bug.pl line 45
    -> finish for DBD::Oracle::st (DBI::st=HASH(0x1e8040)~0x1867d4)
    <- finish= 1 at ./bug.pl line 50
    -> disconnect for DBD::Oracle::db (DBI::db=HASH(0x1e73f4)~0x1e7370)
    <- disconnect= 1 at ./bug.pl line 52
    <> DESTROY ignored for outer handle DBI::db=HASH(0x1e73f4) (inner
DBI::db=HASH(0x1e7370))
    <> DESTROY ignored for outer handle DBI::st=HASH(0x1e8040) (inner
DBI::st=HASH(0x1867d4))
    -> DESTROY for DBD::Oracle::st (DBI::st=HASH(0x1867d4)~INNER)
    <> DESTROY ignored for outer handle DBI::st=HASH(0x1e7394) (inner
DBI::st=HASH(0x1e71f0))
    -> DESTROY for DBD::Oracle::st (DBI::st=HASH(0x1e71f0)~INNER)
    <- DESTROY= undef
    dbih_clearcom 0x1e7394 (com 0x232230, type 3) done.

    <- DESTROY= undef
    dbih_clearcom 0x1e8040 (com 0x232040, type 3) done.

    -> DESTROY for DBD::Oracle::db (DBI::db=HASH(0x1e7370)~INNER)
    <- DESTROY= undef
    dbih_clearcom 0x1e73f4 (com 0x1fa1e8, type 2) done.

    -- DBI::END
    -> disconnect_all for DBD::Oracle::dr
(DBI::dr=HASH(0x1a99fc)~0x1e804c)
    <- disconnect_all= '' at
/usr/local/lib/perl5/site_perl/5.6.1/sun4-solaris/DBI.pm line 575 via
./bug.pl line 0
    dbih_clearcom 0x1a99fc (com 0xfbad8, type 1) done.

    <> DESTROY for DBI::dr=HASH(0x1a99fc) ignored (inner handle gone)
:1 = 0, :2 = MR, :3 = DBI::st=HASH(0x1e7394)
WILLIAM,RIKER
JEAN-LUC,PICARD
== DBImake.log
========================================================================
======
== DBDmake.log
========================================================================
======
== END
========================================================================
======



Reply via email to