以前一直以为自已的处理方法是对的, 在asyncdata脚角正式使用了一次后, 发现还是错了.
下面一段是原来的处理角本:
my $rv = $delstmt->execute_array({ArrayTupleStatus => \@rowstats});
if (! defined($rv))
{
# Error processing
my $updcnt = @rowstats;
for($i=0;$i<$updcnt;$i++)
{
if (ref $rowstats[$i])
{
# Error code : $rowstats[$i]->[0]
# Error mesg : $rowstats[$i]->[1]
......
}
}
}
而准确的代码应当是:
my $rv = $delstmt->execute_array({ArrayTupleStatus => \@rowstats});
if (! defined($rv))
{
if ($delstmt->err())
{
# Normal Oracle error, for example table is read only.
......
}
else
{
# Array DML Error processing
my $updcnt = @rowstats;
my $j = 0;
for($i=0;$i<$updcnt;$i++)
{
if (ref $rowstats[$i])
{
# Error code : $rowstats[$i]->[0]
# Error mesg : $rowstats[$i]->[1]
......
}
}
}
}
现在已经修复好了, 如果有使用asyncdata角本的, 请重新下载.