gpt4 book ai didi

sql-server - Perl -- 查询获取 Not Hash Reference 时的 DBI selectall_arrayref

转载 作者:行者123 更新时间:2023-12-02 06:43:44 25 4
gpt4 key购买 nike

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

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

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

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

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

当我运行它时,出现错误“不是哈希引用”。我不明白?!谁能帮忙!

行为

最佳答案

您需要向 selectall_arrayref 提供 { Slice => {} } 参数如果您希望将每一行存储为散列:

my $aryref = $dbh->selectall_arrayref($query, { Slice => {} });

默认情况下,它返回对数组的引用,其中包含对获取的每一行数据的数组的引用。

关于sql-server - Perl -- 查询获取 Not Hash Reference 时的 DBI selectall_arrayref,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3862563/

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