eval{} is a general solition but is not needed in this case becaue DBI handles have two modes for reporting errors depending on the state of the RaiseError attribute.
If $dbh->{RaiseError} is false (the default) then you can ignore SQL errors simply by not checking to see if there's been one.
Personsally I always open DBI handles with RaiseError true and switch it off locally in blocks where I want to ignore or recover from SQL errors.
To drop an SQL object that may or may not exist I do:
{ local $dbh->{RaiseError} = 0; $dbh->do("drop table DSR_SMR_Result_storage_keep"); }
Obviously if the drop fails for some reason other than the object not existing then I miss the reason but since the next SQL statment is typically about to create the object again I do at least get an error there.
In reply to Re^2: Database access problem
by nobull
in thread Database access problem
by Win
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |