如何从结果集中返回多个记录?

时间:2017-12-19 16:16:31

标签: perl teradata dbi

我正在使用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";
    }
}

我的问题是如何移动相同的数组并从同一行获取下一个结果集?谢谢!

以上代码的结果如下:

PRIMARY INDEX(ProcID,CollectTimeStamp); ONE)NICODE NOT CASESPECIFIC,OT NULL,C,

我不认为它会带回整个内容,不知何故它不完整

1 个答案:

答案 0 :(得分:0)

[这可能算作“不是答案”,但我正试图从OP中提取更多有用的信息,并且向他展示我希望他在答案中运行的代码要容易得多]

我们仍然不知道你在这里要做什么。而且,说实话,我不相信你这样做: - )

让我们看看原始数据 - 没有你要添加的任何处理。请尝试运行以下代码,然后edit your question添加输出(如果它返回多行,则只需要包含一对)。

my $rows = $dbh->selectall_arrayref
                  ("show SELECT * FROM TABLE
                   INNER JOIN TABLE1 
                   ON bla bla ;");

foreach my $row (@$rows) {
  print join(' / ', @$row), "\n";
}

然后,请告诉我们(使用这些行作为示例)您想要的输出。