我有兩個表src_pos和dest_pos。從plpgsql腳本中的行變量插入PostGIS對象(例如ST_GeomFromText)
src_pos存儲具有經度,緯度和高度的位置,而dest_pos存儲PosGIS幾何對象。
現在我想從src_pos移動一堆數據到dest_pos與以下plpgsql腳本。 但它失敗了,因爲row vaiable(例如row_data.longitude)不能被正確解釋。 我該如何克服這個問題!?
--create language 'plpgsql';
drop function createPosition();
create function createPosition() returns integer AS
$$
DECLARE
updated INTEGER = 0;
row_data src_pos%ROWTYPE;
BEGIN
FOR row_data IN SELECT * FROM src_pos
LOOP
INSERT INTO dest_pos (coord) VALUES (ST_GeomFromText('POINT(row_data.longitude row_data.latitude row_data.altitude)', 4326));
updated := updated + 1;
END LOOP;
RETURN updated;
END;
$$
LANGUAGE 'plpgsql';
發現了一個可能的解決方案 ST_GeomFromText( 'POINT(' || row_data.longitude || '' || row_data.latitude || '' || || row_data.altitude ')',4326) – elgcom
你的解決方案很好... ST_GeomFromText從你給出的字符串中讀取,並且不會理解腳本其餘部分的變量。使用||構建出包含變量的ST_GeomFromText語句是您的解決方案 – Twelfth