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