函数中的If语句的PGSQL错误

时间:2014-08-06 10:53:20

标签: postgresql if-statement

我试图为pgsql创建一个函数,如果设备存在于演讲厅,我需要返回一个布尔值。我收到以下错误:

"ERROR: return type mismatch in function declared to return boolean"
    "DETAIL: Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING."

CREATE FUNCTION hasProjector(int) RETURNS boolean AS $$
        DO
        $do$
        BEGIN
        IF EXISTS(SELECT * FROM LectureRoomEquipment WHERE LectureRoomID = $1 AND             EquipmentID = 1) THEN
            SELECT true AS hasProjector;
        ELSE
            SELECT false AS hasProjector;
        END IF;
        END
        $do$
    $$ LANGUAGE SQL;

有没有人告诉我我做错了什么以及如何解决这个问题?谢谢。

1 个答案:

答案 0 :(得分:0)

您不需要plpgsql。这样做是纯SQL

create function hasprojector(int) returns boolean as $$

    select exists (
        select *
        from lectureroomequipment
        where lectureroomid = $1 and equipmentid = 1
    );

$$ language sql;