您可以使用回调来处理要忽略的消息。见 DBD :: Sybase docs 。以下内容源自文档。您指定要忽略的消息编号。
%blocked_msgs = map { $_ => 1 } ( 2401, 2411 ); sub err_handler { my($err, $sev, $state, $line, $server, $proc, $msg, $sql, $err_type) = @_; if ( exists $blocked_msgs{$err} ) { # it's a blocked message return 0; # This is not an error } return 1; }
这是您可以使用它的方式:
$dbh = DBI->connect('dbi:Sybase:server=troll', 'sa', ''); $dbh->{syb_err_handler} = \&err_handler; $dbh->do("exec someproc"); $dbh->disconnect;