Procedura dodająca lub edytująca rekord w tabeli
Aby uniknąć tworzenia dwóch osobnych procedur do dodawania i edycji rekordu można użyć konstrukcji if (exists(…)) then. Przykładowy skrypt może wyglądać tak:
CREATE PROCEDURE PR_MIX_DO_ZM( ID INTEGER, SYMBOL VARCHAR(50), NAZWA VARCHAR(50), PROCENT_WODY NUMERIC(15,2)) RETURNS ( ID_MIX INTEGER) AS BEGIN IF (EXISTS( SELECT ID FROM MIX WHERE ID = :ID )) THEN BEGIN /* UPDATE */ ID_MIX = ID; UPDATE MIX SET SYMBOL = :SYMBOL, NAZWA = :NAZWA, PROCENT_WODY = :PROCENT_WODY WHERE ID = :ID; END ELSE BEGIN /* ISERT */ ID_MIX = GEN_ID(GEN_MIX_ID, 1); INSERT INTO MIX ( ID, SYMBOL, NAZWA, PROCENT_WODY ) VALUES ( :ID_MIX, :SYMBOL, :NAZWA, :PROCENT_WODY ); END SUSPEND; END