2016-04-28 22 views
1

この関数を実行します。しかし、それはエラーを得た私がしたい。この機能でpostgresql関数で選択クエリの戻り値をキャッチして使用します。

ERROR:

syntax error at or near ":="

LINE 7: select result:=MAX(path_history_id)as path INTO result from...

を言った:

  1. select with (MAX)を実行し、それがテーブルから最大のIDを返します。
  2. その値をキャッチします(これは整数値です)。
  3. 最後の選択クエリにその値を入れるwhere where condition。

私はこれを行うためにpostgresqlの方法を見つけることができません。

CREATE OR REPLACE FUNCTION memcache(IN starting_point_p1 character varying, IN ending_point_p1 character varying) 

RETURNS TABLE(path integer, movement_id_out integer, object_id_fk_out integer, path_history_id_fk_out integer, walking_distance_out real, angel_out real, direction_out character varying, time_stamp_out timestamp without time zone, x_coordinate_out real, y_coordinate_out real, z_coordinate_out real) AS 
$BODY$ 
    DECLARE result int; 
    BEGIN 

    select result:=MAX(path_history_id)as path INTO result from path_history_info where starting_point=starting_point_p1 and ending_point =ending_point_p1 and achieve='1'; 
    return query 
    select * from movement_info where path_history_id_fk=result;  
    END; 
    $BODY$ 
    LANGUAGE plpgsql 

答えて

1

構文エラー

次のようにあなたの関数内の最初のクエリを変更する必要があります:

select MAX(path_history_id)as path INTO result 
    from path_history_info 
    where starting_point=starting_point_p1 
    and ending_point =ending_point_p1 and achieve='1'; 

あなたが実際に必要としない単一のクエリ

をこのためのストアドプロシージャ。 1つのクエリで同じ結果が得られます。

select * from movement_info where path_history_id_fk = 
(SELECT MAX(path_history_id) FROM path_history_info 
    where starting_point=starting_point_p1 
    and ending_point =ending_point_p1 and achieve='1'; 
+0

thanks.its work.itは私にとって大きな意味です – Dise

関連する問題