2013-03-18 82 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