Я создал функцию в postgresql 10 и пытаюсь вызвать ее из своего. net core 2.2 API-интерфейса. Но это не работает. Функция выглядит следующим образом:
CREATE OR REPLACE PROCEDURE booking_retrieval(label_to_query VARCHAR, city_to_query VARCHAR, timestart timestamp, timeend timestamp, count int)
RETURNS TABLE (
ts timestamp,
payload jsonb)
AS $$
DECLARE
timedifference interval := interval '0' minute;
deltainterval interval := interval '30' second;
currentmoment_max timestamp;
currentmoment_min timestamp;
iterator INTEGER;
BEGIN
timedifference = (timeend - timestart)/(count - 1);
FOR iterator IN 0..(count - 1) LOOP
currentmoment_max = timestart + iterator*timedifference + deltainterval;
currentmoment_min = timestart + iterator*timedifference - deltainterval;
select "timestamp", value_payload into ts, payload from private.Booking where label = label_to_query and city = city_to_query and timestamp >= currentmoment_min and timestamp <= currentmoment_max limit 1;
RETURN NEXT;
END LOOP ;
END; $$
LANGUAGE PLPGSQL;
Я пытался вызвать его из. net бэкэнд api ядра 2.2, и команда следующая:
spectrums = await context.Booking.FromSql($"SELECT * FROM private.booking_retrieval({Name}, {city}, {timeFrom}, {timeTo}, {amount})"
).ToListAsync();
Здесь Имя, город, время, timeTo и amount определяются пользователем. Переменная содержит определенные пользователем значения. Но как только я запускаю его из backend API, он просто загружается на неопределенное время.
Я даже пробовал:
spectrums = await context.Booking.FromSql(SELECT * FROM private.booking_retrieval({label_to_query},{city_to_query}, {timestart},{timeend},{count} ), new SqlParameter("@label_to_query", name),
new SqlParameter("@city_to_query", city),
new SqlParameter("@timestart", timeFrom),
new SqlParameter("@timeend", timeTo),
new SqlParameter("@count", amount)).ToListAsync();*/
Что показывает ошибку 500. Любая идея.