Выбрать из блока выполнения?

Можно ли выбрать результат выполнения блока? Я хочу выполнить какую-то операцию (сумма и т.д.) из него.

 select t1.* 
 from 
   ( execute block 
     returns ( 
       OUT_VALUE integer ) 
    as 
    begin 
    ... 
    suspend; 
  end ) t1

or

 with   
 t1 as ( execute block ... ) 
   select * 
   from t1 
   order by 
     t1.sort_column 

Ни то ни другое не работает. У кого-нибудь есть совет? Спасибо!


person Steve88    schedule 09.06.2016    source источник
comment
Чего именно вы пытаетесь достичь? Невозможно обернуть execute block в выбор, но execute block может создать набор результатов, как и обычный выбор. Таким образом, в зависимости от того, что вы пытаетесь сделать, это просто вопрос перемещения всей логики выбора в файл execute block. В противном случае вам нужно будет создать настоящую выбираемую хранимую процедуру и использовать ее.   -  person Mark Rotteveel    schedule 09.06.2016
comment
Мне это тоже нужно. Цель состоит в том, чтобы запустить некоторый PSQL без создания хранимой процедуры, а затем выбрать из нее.   -  person Ondřej    schedule 19.02.2019


Ответы (1)


Вы должны создать независимую хранимую процедуру, например

create procedure proc1
returns (
  OUT_VALUE integer 
) as
begin
   ... 
  suspend; 
end

а затем выберите этот процесс

select sum(OUT_VALUE)
from proc1
person JPB31    schedule 13.06.2016