2014-06-09 36 views
0

我想創建一個函數,它將在檢查表RESERVATION中是否有任何行的RESERVATION_ID與我給它的reser_id相等之後檢查返回一個整數變量(或布爾值)。但是我的代碼在IF語句中看起來不對。PostgreSQL如果函數中出現錯誤42601

這是我的查詢代碼:

CREATE OR REPLACE Function fcn_check (reser_id integer) RETURNS integer AS $$ 
BEGIN 
    IF (EXISTS (SELECT * FROM TICKET_TICKET WHERE reservation_id = reser_id)) 
     THEN SELECT 1 AS result; 
    ELSE SELECT 0 AS result; 
    END IF; 
END  
$$ LANGUAGE SQL; 

的錯誤信息是:

ERROR: syntax error at or near "IF" 
LINE 2: IF (SELECT * FROM TICKET_TICKET WHERE reservation_id = rese... 
     ^

********** Error ********** 

ERROR: syntax error at or near "IF" 
SQL state: 42601 
Character: 76 

林在pgSQL的一個新手,看起來像我沒有足夠努力來解決售後服務這一點,但請大家幫幫我。 非常感謝!

回答

1

$$ LANGUAGE SQL;

您似乎在編寫PL/PgSQL,但您已將其聲明爲SQL。使用LANGUAGE plpgsql

+0

哦,謝謝你!我做到了,但仍不知道$$的工作方式,有多少關鍵字用於它? – user3721005

+0

我不明白你在問什麼。 –

+1

我看到「$$」之後它們什麼都沒有,有時它們是「LAGUAGE SQL」,有時是「LANGUAGE plpgsql」。 我仍然不能得到他們的意義。 – user3721005