2016-06-13 2 views
0

나는 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); 

일을 시도했지만 작동하지 않았다 나는 검증을 만들기 위해이 필요합니다. 나 좀 도와 줄 수있어?

+0

어디에서 해 보았습니까? 다른 함수에서? 코드를 입력하십시오. –

+1

"*하지만 작동하지 않았습니다 *"는 유효한 Postgres 오류 메시지가 아닙니다. –

답변

0

은 SELECT INTO로 시도 :

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

이것은 당신의 변수에 반환 값을 "선택"할 것이다.

관련 문제