2016-06-13 24 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); 

これはあなたの変数に戻り値を "SELECT" になります。

関連する問題