如何在PostgreSQL中将函数的返回值设置为变量?

时间:2016-06-13 05:59:32

标签: postgresql

我在Postgresql中有这个功能

CREATE OR REPLACE FUNCTION verificar2 (rooms INT[], fecha_I DATE, fecha_F DATE) RETURNS BOOLEAN AS $verificar_Fechas$
DECLARE
    reg INT;
    size int := array_length(rooms,1); --Get the size of the array to search one by one
    x int; --for counting the reservations available
BEGIN
    FOR reg IN 1..size
    loop
        SELECT count(*) INTO x
        FROM 
            reservacion r 
            INNER JOIN rh ON (r.num_reservacion=rh.num_reservacion)
            INNER JOIN habitacion h ON (h.num_habitacion=rh.num_habitacion)
        where   h.num_habitacion=rooms[reg]
            and not 
            (fecha_F BETWEEN r.fecha_entrada AND r.fecha_salida
            or
            fecha_I BETWEEN r.fecha_entrada AND r.fecha_salida
            or
            fecha_I < r.fecha_Entrada and fecha_F > r.fecha_salida
            );

        IF x = 0 Then
          return false;
        ELSE
          return true;
        END IF;
    end loop;
END;
$verificar_Fechas$ LANGUAGE plpgsql;

我还有另一个带有以下变量的函数 validReservations BOOLEAN;

我需要将第一个函数的返回值设置为变量,我尝试了

validR := verificar2 (rooms, fecha_entrada, fecha_salida);

但它不起作用,我需要进行验证。你能救我吗?

1 个答案:

答案 0 :(得分:0)

使用SELECT INTO尝试:

SELECT * INTO validReservations FROM verificar2 (rooms, fecha_entrada, fecha_salida);

这会将返回值“SELECT”到变量中。