gpt4 book ai didi

perl - DBI:selectall_arrayref 和列名

转载 作者:行者123 更新时间:2023-12-02 01:14:42 26 4
gpt4 key购买 nike

当我以这种方式获取数据时,是否可以访问列名和列类型,或者我是否需要明确的prepare才能实现这一点?

use DBI;

my $dbh = DBI->connect( ... );
my $select = "...";
my @arguments = ( ... );

my $ref = $dbh->selectall_arrayref( $select, {}, @arguments, );

更新:

使用 prepare 我会这样做:

my $sth = $dbh->prepare( $select );
$sth->execute( @arguments );
my $col_names = $sth->{NAME};
my $col_types = $sth->{TYPE};
my $ref = $sth->fetchall_arrayref;
unshift @$ref, $col_names;

最佳答案

最好的解决方案是使用 prepare获取语​​句句柄,如您在问题的第二部分中所述。如果你使用 selectall_hashrefselectall_arrayref ,你得不到语句句柄,必须自己通过 $dbh->column_info 查询列类型信息( docs ):

my $sth = $dbh->column_info('','',$table,$column);  # or $column='' for all
my $info = $sth->fetchall_arrayref({});
use Data::Dumper; print Dumper($info);

(特别是 COLUMN_NAME 和 TYPE_NAME 属性)。

但是,如果表在两个查询之间更改架构,则会引入竞争条件。

关于perl - DBI:selectall_arrayref 和列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12871496/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com