Re: How to discard the error in SQL query

[email protected] (Bruce Johnson)
Newsgroups perl.dbi.users
Message-ID <[email protected]>
On Apr 30, 2010, at 1:26 PM, Parag Kalra wrote:

> I am executing simple insert SQL queries in a loop
>
> I have a simple requirement - While insert quieries are being  
> executed, if
> any error occurs it should print that message and move to next  
> insert sql
> query. I am using DBD::Oracle on Unix

Try this instead of using $dbh->do().

(This presumes that $dbh is your working database handle, and the  
arrays @name, @address, @email, @custid are the arrays holding your  
data to be inserted into the table. $i is the number of rows you're  
inserting.)

$sqinsert = "Insert into foo (name, address, email, custid)  
values(?,?,?,?)";

$csr= $dbh->prepare($sqinsert);
	if($ora_errstr) {print "$ora_errstr happened with $sqinsert";}
	#this catches errors in the sql

for ($n=0;$n<$i;$n++){
	$csr->execute($name[$n],$address[$n],$email[$n],$custid[$n]);
	if($ora_errstr) {print "$ora_errstr happened with data values  
$name[$n],$address[$n],$email[$n],$custid[$n]";}
	}

I JUST did something similar yesterday dumping some data into our  
oracle database.

Heck, even if you don't trap the error with "if ($ora_errstr)..."  
Oracle DBI doesn't stop the script, it just doesn't work, and goes to  
the next statement.

-- 
Bruce Johnson
University of Arizona
College of Pharmacy
Information Technology Group

Institutions do not have opinions, merely customs
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.