# this is of historical interest at best ;) well, actually the
# calls to fancydie are quite nice...
my %_sql_st;
sub sql_exec($;@) {
my $statement = shift;
my $st = $_sql_st{$statement};
unless($st) {
$st = $db->prepare($statement) or fancydie "unable to prepare statement", $statement;
$_sql_st{$statement} = $st;
}
if (ref $_[0]) {
my $bind = shift;
$sql_exec = $st->execute(@_) or fancydie $db->errstr, "Unable to execute statement `$statement` with ".join(":",@_);
$st->bind_columns(@$bind) or fancydie $db->errstr, "Unable to bind_columns to statement `$statement` with ".join(":",@_);
} else {
$sql_exec = $st->execute(@_) or fancydie $db->errstr, "Unable to execute statement `$statement` with ".join(":",@_);
}
$st;
}
sub sql_fetch {
my $r = &sql_exec->fetchrow_arrayref;
$r ? wantarray ? @{$r}
: $r->[0]
: ();
}
sub sql_fetchall {
my $r = &sql_exec->fetchall_arrayref;
ref $r && @$r ? @{$r->[0]}==1 ? map @$_,@$r
: @$r
: ();
}
sub sql_exists($;@) {
my $select = shift;
my @args = @_;
$select = "select count(*) > 0 from $select limit 1";
@_ = ($select, @_);
goto &sql_fetch;
}