Turn on RaiseError and turn off PrintError. Then use eval{} and $@.
Look at any introductory perl book on using eval{}
Ilya
-----Original Message-----
From: Condle, Joseph P
To: [EMAIL PROTECTED]
Sent: 4/12/02 4:55 AM
Subject: I just don't get how to do error checking.
The following is an insert script I working on. I need to trap the
unique constraint error and send a message back to the user. I am
really confused. I have read the error handling chapter of the O'reilly
Perl DBI book, but I just don't get it. I must have some kind mental
block. If I could get a working example hopefully the light will come
on. This will eventually work with a html Form.
Thanx
Joe Condle
Script started on Fri Apr 12 06:43:36 2002
$ more test.pl
#!/usr/bin/perl -w
#
#
use strict;
use DBI qw(:sql_types);
my $dbh = DBI->connect ( 'dbi:Oracle:xxxxxxxxxxx',
'xxxxxx',
'xxxxx',
{
RaiseError => 0,
PrintError => 1,
AutoCommit => 0
}
) || "Database connection not made
:$DBI::errstr";
my $ssn = '987654321';
my $fname = 'Mike';
my $lname = 'Beer';
my $city = 'Pgh';
my $state = 'Pa';
my $zip = '98765';
my $sql = qq{ INSERT INTO employee VALUES (?, ?, ?, ?, ?, ?)};
my $sth = $dbh->prepare( $sql );
$sth->bind_param(1,$ssn,SQL_VARCHAR);
$sth->bind_param(2,$fname,SQL_VARCHAR);
$sth->bind_param(3,$lname,SQL_VARCHAR);
$sth->bind_param(4,$city,SQL_VARCHAR);
$sth->bind_param(5,$state,SQL_VARCHAR);
$sth->bind_param(6,$zip,SQL_VARCHAR);
$sth->execute();
$dbh->commit;
open(DAN, "> debug.txt");
printf DAN "Errors \n";
printf DAN "err - %s \n",sth->err();
printf DAN "errstr - %s \n",$sth->errstr();
printf DAN "state - %s \n",$sth->state();
printf DAN "errstr - %s \n",$DBI::errstr;
close(DAN);
$sth->finish();
$dbh->disconnect();
$ test.pl
DBD::Oracle::st execute failed: ORA-00001: unique constraint
(CONDLE.EMPLOYEE_PK_SSN) violated (DBD ERROR: OCIStmtExecute) at
.../test.pl line 35.
Can't locate object method "err" via package "sth" (perhaps you forgot
to load "sth"?) at ./test.pl line 40.
Issuing rollback() for database handle being DESTROY'd without explicit
disconnect().
$
$ more debug.txt
Errors
$
script done on Fri Apr 12 06:44:01 2002