0

在下面的代码中,我有@some_array一个数组数组,其中包含名称等文本。所以

@some_array= ([sam, jon, july],[Mike, Han,Tommy],[angie, sita, lanny]); 

现在,当我像sam jon julyfirst 和一样查询列表时mike han tommy。只有执行从第一个列表中返回结果,其他人是 undef。我不知道为什么会有任何帮助。

如果我将第二个切换到第一个并运行它,它将只显示第一个。所以问题是它返回第一个集合,但后续集合返回 undef。我确实启用了严格和警告,但它没有显示任何错误。

my $pointer;
my $db = $db->prepare_cached("
    begin
            :pointer := myFun(:A1);
    end;
            ") or die "Couldn't prepare stat: " . $db->errstr;
$db->bind_param_inout(":pointer", \$pointer, 0, { ora_type => ORA_RSET });

for (my $i = 0; $i < @some_array; $i++) {
    my @firstarray = @{$some_array[$i]};
    my $sql = lc(join(" ", @firstarray));
    print "<pre>$sql</pre>\n";
    $db->bind_param(":A1", $sql);
    $db->execute();
    print "<pre>".Dumper($db->execute())."</pre>\n";
 }
4

1 回答 1

1

我根本看不出这是如何工作的,因为execute返回的是“受影响的行数”,而不是准备好的语句的结果。您似乎还用 return from 覆盖了您的数据库句柄prepare_cached,这将破坏句柄并关闭连接。

您应该查看已绑定到接收存储过程调用结果的$pointerSQL 变量的变量。:pointer

于 2013-03-19T04:19:00.290 回答