2013-03-18 121 views
-1

注意:我已经更正了变量差异,它确实打印了第一个查询中的查询,但它不返回第二个查询中的任何内容。如果我使用第二套只有它的作品。在Oracle中使用perl查询多次只返回第一个查询

在下面的代码中,我有some_array,它是数组的数组,该数组包含名称等文本。所以 @ some_array =([sam,jon,7月],[Mike,Han,Tommy],[angie,sita,lanny]); 现在,当我查询名单如'sam jon july'和'mike han tommy'时。只有执行返回第一个列表的结果其他人是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

这不可能是你真正的代码,可以吗?为什么'@ sql'和'$ sql'被初始化但未被使用,而@ query和$ query'被使用但未被初始化?什么是'$ db','$ dbh'和'$ sdh',为什么它们看起来不那么使用?今后,请更好地发布编译,运行和演示您遇到的问题的代码。 – mob 2013-03-18 22:24:03

+0

对于变量差异,我很抱歉,我已经纠正它。它也打印结果,但第一组只返回undef。如果我将第二组作为第一组,那么它将仅返回第二组。所以问题是它只返回第一组。 – mysteriousboy 2013-03-19 00:40:23

回答

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; 

在所有的程序的顶部受益。这会抓住你想要初始化的奇怪方式,它会捕获你不一致的使用@sql@query更新$sdh$db$dbh

+0

我按照你所说的编辑过,并且使用严格和警告但没有帮助。 – mysteriousboy 2013-03-19 00:40:57