sub database_handle {
my $dbh = DBI->connect("DBI:Sybase:CRAP", "sa", "");
die "connect failed: $DBI::errstr" unless $dbh;
$dbh;
}
####
my $dbh = database_handle();
####
{
my $dbh;
sub database_handle {
return $dbh if defined $dbh;
$dbh = DBI->connect("DBI:Sybase:CRAP", "sa", "");
die "connect failed: $DBI::errstr" unless $dbh;
$dbh;
}
}
####
package My::DB;
use strict;
sub new {
my $class = shift;
$dbh = DBI->connect("DBI:Sybase:CRAP", "sa", "");
die "connect failed: $DBI::errstr" unless $dbh;
bless { handle => $dbh }, $class;
}
sub handle { $_[0]->{handle} }
####
my $dbh = My::DB->new->handle;
####
sub _execute {
my $self = shift;
my($sql, $place, $finish) = @_;
my($sth, $rv);
eval {
$sth = $self->prepare($sql);
$rv = $sth->execute(ref $place eq "ARRAY" ? @$place : ());
$sth->finish if $finish;
};
if ($@) {
My::Exception::DB->throw(sql => $sql, error => $@);
}
return $finish ? $rv : $sth;
}