Subject Re: [firebird-support] Is there a better way of doing this ?
Author Stephen Davey
When a new product is created the insert statement ensures that it is inserted in the table.

After that point, it exists and only the update section matters.

What is the 'exists predicate' ?

Thanks


----- Original Message -----
From: Alan McDonald
To: firebird-support@yahoogroups.com
Sent: Friday, November 24, 2006 10:42 AM
Subject: RE: [firebird-support] Is there a better way of doing this ?


> I use this structure to table maintenance processes.
>
> The simple question is , can it be done in a better way ?
>
> Thanks
>
> Stephen
>
> SET TERM ^ ;
> CREATE PROCEDURE BALE_SAVE
> (
> CODE VARCHAR(30),
> FABRICCODE VARCHAR(20),
> FABRICDESCR VARCHAR(60),
> APMCODE VARCHAR(20),
> APMDESCR VARCHAR(60),
> QTYEST NUMERIC(15,2)
> )
> AS
> DECLARE VARIABLE CNT INTEGER ;
> BEGIN
>
> SELECT COUNT(CODE) FROM BALE
> WHERE BALE.CODE = :CODE
> INTO CNT ;
>
> IF (:CNT=0) THEN INSERT INTO BALE(CODE) VALUES (:CODE) ;
>
> UPDATE BALE
> SET
> FABRICCODE = :FABRICCODE,
> FABRICDESCR = :FABRICDESCR,
> APMCODE = :APMCODE,
> APMDESCR = :APMDESCR,
> QTYEST = :QTYEST
> WHERE
> CODE = :CODE ;
>
> END ^
>

I would use the exists predicate and not do a count - it's much faster.
And why do an insert, then an update? Why not just insert the values?
Alan





[Non-text portions of this message have been removed]