172 похожих чатов

Не могу объявить переменную в функции: DROP FUNCTION IF EXISTS return_table(); CREATE

OR REPLACE FUNCTION return_table( double precision, double precision, double precision, double precision) RETURNS table(distance double precision) AS
$$
DECLARE
result1 double precision;
result2 double precision;
BEGIN
result1 = $1;
result2 = $2;
DROP TABLE IF EXISTS ogr_tmp;
CREATE TEMP TABLE ogr_tmp (id integer, source integer, target integer, cost double precision, reverse_cost double precision);
INSERT INTO ogr_tmp SELECT id, source, target, cost, reverse_cost FROM mymatview2 as r WHERE ST_DWithin(geom_way, ST_GeomFromEWKT('SRID=4326;POINT(37.437280 55.672250)'), 1);
RETURN QUERY
WITH source_tmp AS (SELECT source
FROM hh_2po_4pgr
ORDER BY geom_way <-> ST_SetSRID(ST_MakePoint($1, $2), 4326) ASC
LIMIT 1
),
target_tmp AS (SELECT target
FROM hh_2po_4pgr
ORDER BY geom_way <-> ST_SetSRID(ST_MakePoint($3, $4), 4326) ASC
LIMIT 1
)
SELECT SUM(rd.km) as distance
FROM pgr_dijkstra('SELECT * FROM ogr_tmp as r ',
(SELECT source FROM source_tmp) , (SELECT target FROM target_tmp), true) AS r
JOIN hh_2po_4pgr rd ON r.edge = rd.id ;

END;
$$ LANGUAGE plpgsql;
SELECT * FROM return_table(37.437280, 55.672250, 37.902600, 55.662700);


В этом месте:
POINT(37.437280 55.672250)
Пробовал:
POINT($1 $2)
POINT('result1' 'result2')
не хочет принимать, как подставить переменную?

1 ответов

20 просмотров

Через всяческий string concatenation. 'SRID=4326;POINT(' || $1 || ' ' || $2 || ')' и всё такое (не знаю, нормально ли телеграм сейчас пропустит два символа пайпа, но суть там в объединении строк). Но, право, что-то вас понесло куда-то на ночь глядя. Таблицы какие-то временные, функцыи для них, вот это всё. Суньте вашу CTE внутрь строки запроса, она там точно такая жэ, как и во внешнем запросе будет. (Кстати, с точки зрения результата CTE без RECURSIVE -- это всего лишь синтаксический сахар, того жэ самого можно добиться вставляя запрос непосредственно во FROM).

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта