Perl - 查询获取非哈希参考时DBI selectall_arrayref

Bex*_*Bex 2 sql-server perl dbi

我是perl的新手(但是来自ac #background),我正在尝试将一些脚本移动到Windows框中.由于某些模块无法轻松使用Windows,因此我改变了连接数据库的方式.我有一个sqlserver数据库,我有一个循环读取表中的每一行,然后在这个循环内发送另一个查询来选择不同的信息.我是错误,在同一连接中无法一次执行两个语句.由于我的连接对象是全局的,我无法看到一个简单的方法,因此决定使用以下方法将第一组数据存储在数组中:

my $query = shift;
    my $aryref = $dbh->selectall_arrayref($query) || die "Could not select to array\n";
    return($aryref);
Run Code Online (Sandbox Code Playgroud)

(这是在一个被调用的模块文件中)

然后我做一个foreach循环(其中@ $ s_study是上面返回的$ aryref)

  foreach my $r_study ( @$s_study ) {
    ~~~             
    my $surveyId=$r_study->{surveyid};  <-------error this line
 ~~~~               
        };
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我得到一个错误"不是哈希引用".我不明白?!谁能帮忙!

贝克斯

Eug*_*ash 8

如果要将每一行存储为哈希{ Slice => {} },selectall_arrayref则需要提供参数:

my $aryref = $dbh->selectall_arrayref($query, { Slice => {} });
Run Code Online (Sandbox Code Playgroud)

默认情况下,它返回对数组的引用,该数组包含对每个获取数据行的数组的引用.