当查询失败时,我需要向数组添加错误消息。
这是我的执行线:
$txnQuery[$t] = $sth_Data->execute(@argsIn);
我正在尝试这样的事情:
$txnQuery[$t] = $sth_Data->execute(@argsIn) or die push(@Error,"SQL Error");
答案 0 :(得分:3)
DBI
module提供PrintError
,RaiseError
和HandleError
选项,以调整您希望错误处理的工作方式。前两个只是标志,但是HandleError
可以设置为子例程引用,这将允许您准确写出在发生错误时要发生的事情
例如,您可以通过编写
来创建类似RaiseError
行为的内容
$dbh->{HandleError} = sub {
my ($msg, $dbh, $ret) = @_;
die $msg;
};
或者您可以通过按下数组来累积发生的错误列表,如您所述。这样的事情,也许是
my @errors;
$dbh->{HandleError} = sub {
my ($msg, $dbh, $ret) = @_;
push @errors, $msg;
};
如果您还想在控制台上打印消息,则可以在错误处理程序中warn $msg
,或者只需保留PrintError
设置
您可能希望为推送到阵列的每个项目添加时间戳,并且可以使用数据库句柄参数$dbh
和$ret
执行更复杂的操作,这是失败的DBI
方法