【发布时间】:2018-06-02 03:02:13
【问题描述】:
我正在使用 perl dbi 并获取 sql 结果,但它是以数组的形式出现的。问题是,它只返回 1 个数组元素。我试图推动获得下一个元素,但什么也没有。我确信(使用其他工具)我可以看到不止一个值。它是(来自其他工具)我得到多个 ddls。通过我的查询,我只得到其中一个。这是我的查询:
my $rows = $dbh->selectall_arrayref
("show SELECT * FROM TABLE
INNER JOIN TABLE1
ON bla bla ;");
my $len = @$rows;
print $len;
foreach $h (@$rows) {
$st = $h->[0];
$st =~ s/(\d),(\d)/\1|\2/g;
@lines = split/,/,$st;
foreach $x (@lines) {
print FH $x . "\n";
}
}
我的问题是如何移动相同的数组并从同一行获取下一个结果集?谢谢!
以上代码的结果如下:
主索引 (ProcID,CollectTimeStamp);ONE)NICODE NOT CASESPECIFIC,,OT NULL,C,
我不认为它带回了整个内容,不知何故它不完整
【问题讨论】:
-
@lines来自哪里?您使用什么数据库驱动程序?你如何填充$rows? -
对不起,我错过了一些代码。我正在拆分它:@lines = split/,/,$st;由于第一个结果来自一条线,我正在打破部分。我正在使用 Teradata ODBC 驱动程序,'dbi:ODBC.我正在填充 selectall_arrayref($sql) 并且我也尝试过:fetch_all_array。谢谢!
-
请相应地更新问题中的代码。
-
我已经编辑了您的代码以添加一些缩进(和一点空格)。不客气,但请以后自己做。良好的缩进是帮助人们(包括您!)理解您的代码的重要工具。如果您要让一大群陌生人阅读和理解您的代码,那么让他们尽可能简单是礼貌的做法。
-
你可能想要
for my $st ( @$h ) { ... },但是用这么小的代码样本和没有数据很难分辨。