Perl:DBI bind_param()是否可以作为selectrow_arrayref()的一部分?

时间:2012-08-09 20:48:42

标签: perl dbi

我想在selectrow / selectall函数调用期间绑定param类型。

是否有可能改变:

$sth = $dbh->prepare($sql);
$sth->bind_param(1, undef, {pg_type => DBD::Pg::PG_BYTEA});
$sth->execute($byteavalue);

对于selectrow声明:

$dbh->selectrow_arrayref( $sql, undef, $byteavalue );

1 个答案:

答案 0 :(得分:2)

selectrow_*的第一个参数可以是一个语句句柄,因此您可以使用:

$sth = $dbh->prepare($sql)
and $sth->bind_param(1, undef, { pg_type => DBD::Pg::PG_BYTEA })
and $dbh->selectrow_arrayref($sth, undef, $byteavalue);

否则,您必须创建自己的selectrow_arrayref版本。现有版本是:

sub selectrow_arrayref {
    my ($dbh, $stmt, $attr, @bind) = @_;
    my $sth = ((ref $stmt) ? $stmt : $dbh->prepare($stmt, $attr))
        or return;
    $sth->execute(@bind)
        or return;
    my $row = $sth->fetchrow_arrayref()
        and $sth->finish;
    return $row;
}
相关问题