我創建了以下存儲過程,該存儲過程應返回與多邊形組具有交集的所有位置名稱(沒有獨立...交集3個多邊形=> 3名)語法錯誤在DECLARE部分的「VARCHAR」'處或附近嘗試創建函數時
CREATE OR REPLACE FUNCTION get_name_without_distinct_by_polygon_group(start_time TIMESTAMP,
end_time TIMESTAMP,
polygon_group_id INTEGER)
RETURNS TABLE(name_name_name_name VARCHAR(12)) AS $$
DECLARE
name VARCHAR(12);
poly_id INTEGER;
BEGIN
FOR poly_id IN (SELECT polygon_id
FROM polygon_group_members
WHERE group_id = poly_id)
LOOP
FOR name IN (SELECT DISTINCT name
FROM location, polygons
WHERE location.timestamp BETWEEN start_time AND end_time
AND poly_id = polygons.id
AND st_intersects(location.polygon, polygons.polygon))
LOOP
RETURN NEXT name;
END LOOP;
END LOOP;
RETURN;
END;
$$ LANGUAGE SQL;
當我試圖創建這個功能我得到了以下錯誤:
[42601] ERROR: syntax error at or near "VARCHAR" Position: 356
基於PostgreSQL的declaration documentation似乎OK ......
我試過到目前爲止:
我改變
name VARCHAR(12);
到name location.mac%TYPE
我改變
name VARCHAR(12);
到name RECORD
我改變了申報的範圍,然後我得到了同樣的錯誤on
poly_id INTEGER;
我將
LANGUAGE SQL
更改爲postgressql
我GOOGLE了它,並根據任何示例/問題,我發現這個過程應該工作。
[有沒有 「存儲過程」,在Postgres的,只是功能(HTTP://stackov erflow.com/a/33896307/939860)。你是否鏈接到Postgres 9.1文檔,因爲這是你的實際版本? –