как вызвать функцию postgresql в. net core 2.2 - PullRequest
0 голосов
/ 27 мая 2020

Я создал функцию в 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. Любая идея.

...