Procedurer til opgave
HejsaJeg er lidt newbie omkring interbase. Jeg er igang med at lave en opgave med et bibliotek, og har i den forbindelse lavet 2 procedurer. Den første checker om bogen er udlånt, og returnere så er svar, og den anden søger for at registrere et udlån. Her kommer koden:
Procedure 1.
SET TERM !! ;
CREATE PROCEDURE ER_UDLAAN(BNR INTEGER) RETURNS (RESULTAT VARCHAR(10))
AS
DECLARE VARIABLE DUMMY INTEGER;
BEGIN
DUMMY = 0;
FOR
SELECT BOG_NR
FROM UDLAAN
WHERE BOG_NR = :BNR AND
SLUT_DATO > CURRENT_TIMESTAMP
INTO :DUMMY
DO IF (DUMMY = 0) THEN
RESULTAT = \'OK\';
ELSE
RESULTAT = \'UDLAANT\';
SUSPEND;
END!!
SET TERM ; !!
Det virker når bogen er udlånt, men ikke når den er hjemme. Der må altså være noget iven med dette:
IF (DUMMY = 0). Hvordan skriver man. Hvordan skriver man, om variablen er lig null?
2 Procedure
SET TERM !! ;
CREATE PROCEDURE LAAN_BOG(LNR INTEGER,BNR INTEGER)
RETURNS(RESULTAT VARCHAR(10))
AS
BEGIN
FOR SELECT RESULTAT FROM ER_UDLAAN(:BNR)
INTO :RESULTAT
DO
IF (RESULTAT = \'OK\') THEN
BEGIN
INSERT INTO UDLAAN (BOG_NR, LAANER_NR, START_DATO, SLUT_DATO)
VALUES (:LNR,:BNR,CURRENT_TIMESTAMP, CURRENT_TIMESTAMP + 31);
WHEN SQLCODE 0 DO
BEGIN
RESULTAT = \'OK\';
SUSPEND;
END
WHEN ANY DO
BEGIN
RESULTAT = \'EJ OK\';
SUSPEND;
END
END
ELSE
SUSPEND;
END!!
SET TERM ; !!
Denne virker heller ikke. Hvad kan der være i vejen??
