2006-12-20

Procedura dodająca lub edytująca rekord w tabeli

Filed under: , FireBird — jerzy.holda @ 2:28

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

No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

You must be logged in to post a comment.