Try $dbh->prepare($call, { ora_check_sql => 0 }); (The underlying issue is either an Oracle bug or that one of the two parse steps counted isn't a real parse. DBD::Oracle does a 'describe only' execute at prepare() time and then a normal execute when execute() is called. The execute() should not count as a parse as it has already been parsed, but oracle seems to do, or at least count, another parse.)
Tim. p.s. This is not about the development of drivers so belongs on dbi-users and not on dbi-dev. On Thu, Nov 28, 2002 at 11:37:59AM +0100, Henning Meyer wrote: > Hello, > > I use Perl 5.6.0, DBI 1.30 and DBD-Oracle 1.12. > While checking the performance, my Oracle-Tools discovered, that the > Database does two prepares for every > execute. > > My Perl-Code looks like this: > > my $cur=$dbh->prepare($call); > die "Prepare-Error: $DBI::err\n$call\n$DBI::errstr\n" if > ($DBI::err); > $cur->execute(@$vars); > die "Execute-Error: > $DBI::err\n$call\n$DBI::errstr\n" if > ($DBI::err); > my @res=(); > while (my $href=$cur->fetchrow_hashref) { > die "Fetch-Error: $DBI::err\n$call\n$DBI::errstr\n" if > ($DBI::err); > for(keys %$href) { > $href->{$_}=~s/[\s]*$//; > $href->{$_}=~s/^[\s]//; > } > push(@res,$href); > } > $cur->finish; > return(\@res); > > How could it be, that there is an prepare/execute ratio of 2? I have execute much >equal +statements with bind-Values, and its very annoying that there are 400 prepares >for 200 +executes instead of one prepare. > > Any hints? > > Henning > > -- > ''' > (0 0) > +-------oOO----(_)-------------+ > |Henning Meyer | > |SIEMENS AG ICM N PG ES PD D 2| > +--------------------oOO-------+ > |__|__| > || || > ooO Ooo