CREATE FUNCTION public.feerange (txamount decimal,amount decimal,latefeemax decimal)
    RETURNS INTEGER $feerange$
    DECLARE total INTEGER;
    DECLARE amountsum DECIMAL;
    BEGIN
    
    amountsum= amount + latefeemax;
    if txamount <= amountsum AND txamount >= amount
        THEN total=1
        else
           total=0
     RETURN total
    
    END; 
    $feerange $ LANGUAGE plpgsql;

Saat membuat fungsi ini saya mendapatkan kesalahan jika kondisi

Tapi saya rasa tidak ada yang salah.

Kesalahan yang saya dapatkan adalah

/* ERROR: kesalahan sintaks pada atau di dekat "if" LINE 1: if txamount <= amountsum AND txamount >= amount

Apa yang salah dengan ini? Bantu saya melakukan ini! Terima kasih !!

1
Bhavin Varsur 26 Mei 2021, 15:15

2 jawaban

Jawaban Terbaik

Anda bisa sangat menyederhanakan itu sebagai

CREATE FUNCTION public.feerange (
   txamount decimal,
   amount decimal,
   latefeemax decimal
) RETURNS integer
   LANGUAGE sql AS
'SELECT CAST (txamount <= amount + latefeemax AND txamount >= amount AS integer)';
2
Laurenz Albe 26 Mei 2021, 13:48

Anda lupa end if; dan ; di beberapa tempat

CREATE FUNCTION public.feerange (txamount decimal,amount decimal,latefeemax decimal)
    RETURNS INTEGER
as
$$
    DECLARE total INTEGER;
    DECLARE amountsum DECIMAL;
BEGIN
    amountsum:= amount + latefeemax;
    if txamount <= amountsum AND txamount >= amount
        THEN total:=1;
        else
           total = 0;
    end if;
    RETURN total;
END;
$$ LANGUAGE plpgsql;
2
Alex 26 Mei 2021, 12:28