ich habe eine ziemlich aufwendige Stored Procedure geschrieben, die eine einzeilige Tabelle als Rückgabe liefert:
Code: Alles auswählen
create procedure FAuPrio( FAuId Integer, Prio Integer output, Liefertermin date output ) ...
Code: Alles auswählen
execute procedure FAuPrio( 12345/*FAuId*/ );
Code: Alles auswählen
select FAu.* from FAu
Wie mache ich das? Folgende Lösung funktioniert leider nicht (FAuId nicht bekannt):
Code: Alles auswählen
select FAu.*,
(select FAuPrio.Prio from( execute procedure FAuPrio( FAu.FAuId ) ) FAuPrio) Prio,
(select FAuL.Liefertermin from( execute procedure FAuPrio( FAu.FAuId ) ) FAuL) Liefertermin
from FAu
Dann funktioniert das Statement:create function FAuFunctionPrio( nFAuId integer ) returns integer
begin
return( (select FAuPrio.Prio from (execute procedure FAuPrio( nFAuId )) FAuPrio) );
end;
create function FAuFunctionLiefertermin( nFAuId integer ) returns date
begin
return( (select FAuPrio.Liefertermin from (execute procedure FAuPrio( nFAuId )) FAuPrio) );
end;
Code: Alles auswählen
select FAu.*,
FAuFunctionPrio( FAu.FAuId ) Prio,
FAuFunctionLiefertermin( FAu.FAuId ) Liefertermin
from FAu
Nachteil: je Zeile wird bei Aufruf der Funktionen die stored procedure 2x aufgerufen.
Gibt es eine Lösung, bei der der ADS mit einem Aufruf je Zeile auskommt (ist sehr rechenintensiv, würde die Rechenzeit halbieren!)?
Vielleicht mit Hilfe von Joins?
Uli