как мы можем объявить переменную в курсоре в postgresql - PullRequest
0 голосов
/ 11 ноября 2019

Я хочу сохранить результат извлечения в переменную, как мы можем сделать это в postgresql?

Я также попытался создать функцию, которая не работает

код:

begin work;

DECLARE 

    cur_films CURSOR
       FOR select CURRENT_DATE + i date_
       FROM  generate_series(date '2019-11-11'- CURRENT_DATE,  date '2019-11-15' - CURRENT_DATE ) i;
       fetch forward 2 from cur_films;

close cur_films;

commit work; 

1 Ответ

0 голосов
/ 11 ноября 2019

Если вы хотите передать все значения, сгенерированные вашим запросом, в функцию или процедуру, вы можете объединить все в массив, а затем передать этот массив в функцию:

DECLARE 
  l_dates date[];
begin
  select array_agg(g.dt::date)
    into l_dates
  from generate_series(date '2019-11-11',  date '2019-11-15', interval '1 day') as g(dt);

  perform your_function(l_dates);
end;

Но вы бы не сталидля этого нужен PL / pgSQL. Это также можно сделать простым SQL:

with input as (      
  select array_agg(g.dt::date) as dates
  from generate_series(date '2019-11-11',  date '2019-11-15', interval '1 day') as g(dt)
)
select *
from your_function((select dates from input));
...