All,

I am getting an ORA-01008 when using bind variables on Oracle7 instances,
but not on Oracle8 instances.  This has happened on both Unix and Linux
OS's.  Here is the error:

  DBD::Oracle::db prepare failed: ORA-01008: not all variables bound
  (DBD ERROR: OCIStmtExecute/Describe) at ddl_test.pl line 40, <STDIN> 
  chunk 3.

This was not happening with prior versions of DBD::Oracle (back with
1.06, I think).

Attached is a small test script.  Would those of you with a little time
please see if you can confirm/deny that you also do/don't get the same
error?  

Also attached is a trace from a failed execution on a Unix host.

Thanks!

Richard


=====
Richard Sutherland
[EMAIL PROTECTED]


"It doesn't get any easier, you just go faster."
  -- Greg LeMond

__________________________________________________
Do You Yahoo!?
Get personalized email addresses from Yahoo! Mail
http://personal.mail.yahoo.com/
#! /usr/bin/perl -w

use strict;

use DBI;
use DDL::Oracle;

DBI->trace(3,"dbi.trc");

print STDERR "Enter SID: ";
chomp( my $sid = <STDIN> );
die "\nYou must specify a Database SID.\n" unless $sid;

print STDERR "Enter USER: ";
chomp( my $user = <STDIN> );
die "\nYou must specify a Username.\n" unless $user;

print STDERR "Enter PASSWORD: ";
chomp( my $password = <STDIN> );
die "\nYou must specify a Password.\n" unless $password;

my  $dbh = DBI->connect(
                        "dbi:Oracle:$sid",
                        "$user",
                        "$password",
                        {
                         PrintError => 0,
                         RaiseError => 1
                        }
    );

my $stmt =
    "
     SELECT * 
     FROM   dual
     WHERE  dummy = ?
    ";

my $val = 'X';
my $sth = $dbh->prepare( $stmt );
$sth->execute( $val );
my $dummy = $sth->fetchrow_array;

print "dummy = $dummy\n";
    DBI 1.08 dispatch trace level set to 3
    -> DBI->connect(dbi:Oracle:ci_tw1_tst, rsutherl, pebb3343, HASH(0x140002068))
    -> DBI->install_driver(Oracle) for perl=5.00404 pid=29011 ruid=217 euid=217
       install_driver: DBD::Oracle loaded (version 1.06)
    New DBI::dr (for DBD::Oracle::dr, parent=, id=)
    dbih_setup_handle(DBI::dr=HASH(0x14010db78)=>DBI::dr=HASH(0x1403030e8), 
DBD::Oracle::dr, 0, Null!)
    dbih_make_com(Null!, DBD::Oracle::dr, 152)
    <- install_driver= DBI::dr=HASH(0x14010db78)
    -> connect for DBD::Oracle::dr (DBI::dr=HASH(0x14010db78)~0x1403030e8 'ci_tw1_tst' 
'rsutherl' 'pebb3343' HASH(0x140050468))
    New DBI::db (for DBD::Oracle::db, parent=DBI::dr=HASH(0x1403030e8), id=)
    dbih_setup_handle(DBI::db=HASH(0x140303028)=>DBI::db=HASH(0x1403030d8), 
DBD::Oracle::db, 14010d908, Null!)
    dbih_make_com(DBI::dr=HASH(0x1403030e8), DBD::Oracle::db, 192)
    <- connect= DBI::db=HASH(0x140303028)0keys at DBI.pm line 374.
    -> STORE for DBD::Oracle::db (DBI::db=HASH(0x1403030d8)~INNER 'RaiseError' 1)
    STORE DBI::db=HASH(0x1403030d8) 'RaiseError' => 1
    <- STORE= 1 at DBI.pm line 399.
    -> STORE for DBD::Oracle::db (DBI::db=HASH(0x1403030d8)~INNER 'PrintError' 0)
    STORE DBI::db=HASH(0x1403030d8) 'PrintError' => 0
    <- STORE= 1 at DBI.pm line 399.
    -> STORE for DBD::Oracle::db (DBI::db=HASH(0x1403030d8)~INNER 'AutoCommit' 1)
    <- STORE= 1 at DBI.pm line 399.
    <- connect= DBI::db=HASH(0x140303028)
    -> prepare for DBD::Oracle::db (DBI::db=HASH(0x140303028)~0x1403030d8 '
     SELECT * 
     FROM   dual
     WHERE  dummy = ?
    ')
    New DBI::st (for DBD::Oracle::st, parent=DBI::db=HASH(0x1403030d8), id=)
    dbih_setup_handle(DBI::st=HASH(0x140303078)=>DBI::st=HASH(0x140050528), 
DBD::Oracle::st, 140303088, Null!)
    dbih_make_com(DBI::db=HASH(0x1403030d8), DBD::Oracle::st, 336)
    dbd_preparse scanned 1 distinct placeholders
    dbd_st_prepare'd sql SELECT
    dbd_describe SELECT (EXPLICIT, lb 80)...
    ERROR EVENT -1 'ORA-01008: not all variables bound (DBD ERROR: 
OCIStmtExecute/Describe)' (Handlers: ARRAY)
    <- prepare= undef at ddl_test.pl line 40.
    !! ERROR: -1 'ORA-01008: not all variables bound (DBD ERROR: 
OCIStmtExecute/Describe)'
    <> DESTROY ignored for outer handle DBI::db=HASH(0x140303028) (inner 
DBI::db=HASH(0x1403030d8))
    <> DESTROY ignored for outer handle DBI::st=HASH(0x140303078) (inner 
DBI::st=HASH(0x140050528))
    -> DESTROY for DBD::Oracle::st (DBI::st=HASH(0x140050528)~INNER)
    <- DESTROY= undef at unknown location!
    -> DESTROY for DBD::Oracle::db (DBI::db=HASH(0x1403030d8)~INNER)
    <- DESTROY= undef at unknown location!
    -> DBI::END
    -> disconnect_all for DBD::Oracle::dr (DBI::dr=HASH(0x14010db78)~0x1403030e8)
    <- disconnect_all= '' at DBI.pm line 416.
    <- DBI::END complete
    -> DESTROY in DBD::_::common for DBD::Oracle::dr (DBI::dr=HASH(0x1403030e8)~INNER)
    <- DESTROY= undef during global destruction.
    <> DESTROY for DBI::dr=HASH(0x14010db78) ignored (inner handle gone)
    DBI 1.08 dispatch trace level set to 3
    -> DBI->connect(dbi:Oracle:ci_tw3_dev, rsutherl, pebb3343, HASH(0x140002068))
    -> DBI->install_driver(Oracle) for perl=5.00404 pid=25312 ruid=217 euid=217
       install_driver: DBD::Oracle loaded (version 1.06)
    New DBI::dr (for DBD::Oracle::dr, parent=, id=)
    dbih_setup_handle(DBI::dr=HASH(0x14010db78)=>DBI::dr=HASH(0x1403030e8), 
DBD::Oracle::dr, 0, Null!)
    dbih_make_com(Null!, DBD::Oracle::dr, 152)
    <- install_driver= DBI::dr=HASH(0x14010db78)
    -> connect for DBD::Oracle::dr (DBI::dr=HASH(0x14010db78)~0x1403030e8 'ci_tw3_dev' 
'rsutherl' 'pebb3343' HASH(0x140050468))
    New DBI::db (for DBD::Oracle::db, parent=DBI::dr=HASH(0x1403030e8), id=)
    dbih_setup_handle(DBI::db=HASH(0x140303028)=>DBI::db=HASH(0x1403030d8), 
DBD::Oracle::db, 14010d908, Null!)
    dbih_make_com(DBI::dr=HASH(0x1403030e8), DBD::Oracle::db, 192)
    <- connect= DBI::db=HASH(0x140303028)0keys at DBI.pm line 374.
    -> STORE for DBD::Oracle::db (DBI::db=HASH(0x1403030d8)~INNER 'RaiseError' 1)
    STORE DBI::db=HASH(0x1403030d8) 'RaiseError' => 1
    <- STORE= 1 at DBI.pm line 399.
    -> STORE for DBD::Oracle::db (DBI::db=HASH(0x1403030d8)~INNER 'PrintError' 0)
    STORE DBI::db=HASH(0x1403030d8) 'PrintError' => 0
    <- STORE= 1 at DBI.pm line 399.
    -> STORE for DBD::Oracle::db (DBI::db=HASH(0x1403030d8)~INNER 'AutoCommit' 1)
    <- STORE= 1 at DBI.pm line 399.
    <- connect= DBI::db=HASH(0x140303028)
    -> prepare for DBD::Oracle::db (DBI::db=HASH(0x140303028)~0x1403030d8 '
     SELECT * 
     FROM   dual
     WHERE  dummy = ?
    ')
    New DBI::st (for DBD::Oracle::st, parent=DBI::db=HASH(0x1403030d8), id=)
    dbih_setup_handle(DBI::st=HASH(0x140303078)=>DBI::st=HASH(0x140050528), 
DBD::Oracle::st, 140303088, Null!)
    dbih_make_com(DBI::db=HASH(0x1403030d8), DBD::Oracle::st, 336)
    dbd_preparse scanned 1 distinct placeholders
    dbd_st_prepare'd sql SELECT
    dbd_describe SELECT (EXPLICIT, lb 80)...
    fbh 1: 'DUMMY'      NULLable, otype   1->  5, dbsize 1/2, p1.s0
    dbd_describe'd 1 columns (row bytes: 1 max, 1 est avg, cache: 1042)
    <- prepare= DBI::st=HASH(0x140303078)0keys at ddl_test.pl line 40.
    -> execute for DBD::Oracle::st (DBI::st=HASH(0x140303078)~0x140050528 'X')
       bind :p1 <== 'X' (type 0)
       bind :p1 <== 'X' (size 1/2/0, ptype 4, otype 1)
       bind :p1 <== 'X' (size 1/1, otype 1, indp 0)
       bind :p1 done
    dbd_st_execute SELECT (out0, lob0)...
       dbd_phs_in  ':p1' (0,0): len  1, ind 0
    dbd_st_execute SELECT returned (SUCCESS, rpc0, fn4, out0)
    <- execute= '0E0' at ddl_test.pl line 41.
    -> fetchrow_array for DBD::Oracle::st (DBI::st=HASH(0x140303078)~0x140050528)
    dbd_st_fetch 1 fields...
    dbih_setup_fbav for 1 fields => 0x140007f68
    dbd_st_fetch 1 fields SUCCESS
    <- fetchrow_array= 'X' at ddl_test.pl line 42.
    <> DESTROY ignored for outer handle DBI::db=HASH(0x140303028) (inner 
DBI::db=HASH(0x1403030d8))
    <> DESTROY ignored for outer handle DBI::st=HASH(0x140303078) (inner 
DBI::st=HASH(0x140050528))
    -> DESTROY for DBD::Oracle::st (DBI::st=HASH(0x140050528)~INNER)
    <- DESTROY= undef at unknown location!
    -> DESTROY for DBD::Oracle::db (DBI::db=HASH(0x1403030d8)~INNER)
    <- DESTROY= undef at unknown location!
    -> DBI::END
    -> disconnect_all for DBD::Oracle::dr (DBI::dr=HASH(0x14010db78)~0x1403030e8)
    <- disconnect_all= '' at DBI.pm line 416.
    <- DBI::END complete
    -> DESTROY in DBD::_::common for DBD::Oracle::dr (DBI::dr=HASH(0x1403030e8)~INNER)
    <- DESTROY= undef during global destruction.
    <> DESTROY for DBI::dr=HASH(0x14010db78) ignored (inner handle gone)

Reply via email to