0

以下のコード@some_arrayでは、名前のようなテキストを含む配列の配列です。そう

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

今、sam jon july最初のようにリストをクエリするとmike han tommy. 実行のみが最初のリストから結果を返します。その他は undef です。なぜ助けがありがたいのかわかりません。

2 位を 1 位に切り替えて実行すると、1 位のみが表示されます。したがって、問題は、最初のセットでは返されますが、後続のセットでは undef が返されることです。strict と warnings を有効にしましたが、エラーは表示されませんでした。

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準備されたステートメントの結果ではなく、「影響を受ける行の数」を返すため、これがどのように機能するかはまったくわかりません。また、からの戻り値でデータベース ハンドルを上書きしたようですprepare_cached。これにより、ハンドルが破棄され、接続が閉じられます。

ストアド プロシージャ呼び出しの結果を受け取る$pointerSQL 変数にバインドした変数を確認する必要があります。:pointer

于 2013-03-19T04:19:00.290 に答える