PostgresでSQLのみを使用してこの関数を簡単にすることはできますか? (削除なし、忘れないでください) クエリを選択して挿入するだけです。Postgres SQLクエリに関数を簡略化
私は「再帰的に」成功していませんでした。
CREATE OR REPLACE FUNCTION mt_CriarRotaExecutada(id_rota integer)
RETURNS void AS
$$
DECLARE
searchsql text := '';
searchsqlId text := '';
var_match RECORD;
BEGIN
EXECUTE('delete from rota_executada where id_rota = ' || CAST(id_rota As text));
searchsql := 'select (ST_DumpPoints(the_geom)).geom as the_geom,
id_destino
from (select id, the_geom, id_destino
from rota_data
where num =' || CAST(id_rota As text) ||
' order by id) a';
FOR var_match IN EXECUTE(searchsql)
LOOP
EXECUTE 'insert into rota_executada(id_rota, id_rua, id_destino, the_geom, visitado)
select $1, id, $3, $2, $4
from ruas r
ORDER BY r.the_geom <#> $2
LIMIT 1'
USING id_rota, var_match.the_geom, var_match.id_destino, 'N';
END LOOP;
END;
$$
LANGUAGE 'plpgsql';
ありがとうございます。
何オペレータ '' <#>のですか? –
ある点から他の点までの距離。 @JuanCarlosOropeza –
「<->」との違いは何ですか? –