2016-06-09 17 views
1

Ist es möglich, aus dem execute block result auszuwählen? Ich möchte etwas Operation (Summe etc ..) daraus ausführen.Auswahl aus Ausführungsblock?

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

oder

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

Weder funktioniert nicht. Hat jemand einen Rat? Vielen Dank!

+1

Was genau Sie erreichen wollen? Es ist nicht möglich, einen "Ausführungsblock" in eine Auswahl einzubinden, aber ein "Ausführungsblock" kann eine Ergebnismenge erzeugen, die genau wie eine normale Auswahl wäre. Je nachdem, was Sie zu tun versuchen, ist es nur eine Frage der gesamten Auswahllogik ** in ** den "Ausführungsblock" zu bewegen. Andernfalls müssen Sie eine wirklich auswählbare gespeicherte Prozedur erstellen und diese verwenden. –

Antwort

2

Sie sollten eine unabhängige gespeicherte Prozedur wie

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

erstellen und wählen Sie dann auf dieser proc

select sum(OUT_VALUE) 
from proc1