注意:我已经更正了变量差异,它确实从第一组打印查询,但它从第二组中没有返回任何内容。如果我使用第二套只有它可以工作。
在下面的代码中,我有some_array,它是数组的数组,数组包含像name这样的文本。所以 @ some_array =([sam,jon,july],[Mike,Han,Tommy],[angie,sita,lanny]); 现在,当我查询名单时,像七月七日那样。第一个和迈克·汉姆·汤米' 。只有执行返回第一个列表中的结果,其他是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";
}
答案 0 :(得分:2)
就像每个人都在the last question you asked上告诉你的那样,用括号初始化数组,而不是嵌套括号。
@some_array= ([sam, jon, july],[Mike, Han,Tommy],[angie, sita, lanny])
不
@some_array= [[sam, jon, july],[Mike, Han,Tommy],[angie, sita, lanny]]
你也可以从包括
中受益匪浅use strict;
use warnings;
位于所有程序的顶部。这会抓住您尝试初始化@some_array
的奇怪方式,并且它会捕获您对@sql
和@query
的不一致使用情况。 更新和$sdh
以及$db
和$dbh
。