Since a block wasn't exited before the exception was handled, wouldn't
any database statements in the block stand?
Assume for a moment that it wasn't a constraint violation, but a table
trigger throwing a custom exception, and the catch block handles it
instead of handling constraint violations.

FB exception syntax confuses me, as I'm used to other languages where
the catch is outside the block.

-----Original Message-----
From: firebird-support@yahoogroups.com
[mailto:firebird-support@yahoogroups.com] On Behalf Of Thomas
Steinmaurer
Sent: Thursday, January 10, 2013 1:51 PM
To: firebird-support@yahoogroups.com
Subject: Re: [firebird-support] Exception handling in loop

> I want to select a bunch of items and insert them somewhere else.  If 
> the insert fails because of a duplicate primary key or unique 
> constraint, I want to abandon that particular item and continue with 
> the rest.
> This code outlines my logic.  Is this correct for what I'm trying to 
> accomplish?
>
> BEGIN
>
>    FOR SELECT DO BEGIN
>
>      BEGIN
>
>        INSERT
>
>      END /* INSERT */
>
>      WHEN GDSCODE unique_key_violation DO
>      BEGIN
>        /* NOP */
>      END
>
>    END /* SELECT */
>
> END /* PROCEDURE */

I guess this should be:

BEGIN
   FOR SELECT DO
   BEGIN
     INSERT
     WHEN GDSCODE unique_key_violation DO
     BEGIN
       /* NOP */
     END
   END /* SELECT */
END /* PROCEDURE */



Regards,
Thomas












------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Visit http://www.firebirdsql.org and click the Resources item on the
main (top) menu.  Try Knowledgebase and FAQ links !

Also search the knowledgebases at http://www.ibphoenix.com 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Yahoo! Groups Links



Reply via email to