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)