Thanks Perrin, your always full of good answers :)
> On Thu, 2003-10-23 at 13:00, Levon Barker wrote: >> Should I be making new statement handlers for every new request? > > You don't have to, but if you don't and the Oracle connection gets lost > and Apache::DBI reconnects, your stale statement handles will all fail. > The best thing to do is use prepare_cached. This will use an already > prepared statement handle if possible. > >> package SomeModuleWhichShowsUpAsaAPage; >> >> my $dbh = DBI->connect ( 'dbi:Oracle:paprodi','test', 'test', >> { >> RaiseError => 1, >> AutoCommit => 0 >> } >> ) || die "Oracle database connection not made"; >> >> my $sql = "select title from industry where id = ?"; >> my $sth = $dbh->prepare($industrySql); > [...] >> sub get_industry_str { >> my $id = shift; >> $sth->execute($id); >> my $title; >> $sth->bind_col( 1, \$title); >> $while ($sth->fetch) { >> } >> return $title; >> } > > Do you load this module from startup.pl or httpd.conf? If you load this > before apache forks, it will create a database connection and statement > handle, and then try to use them after the fork. (Your sub that refers > to $sth is a closure.) > > You should not open a database handle before the fork. Instead, open it > in your handler method, and create a new $sth (with prepare_cached). > Apache::DBI and prepare_cached will take care of caching these for you. > > - Perrin > Levon Barker Portfolio Aid 416-413-4053