Das hört sich interresant an. Wie kann ich das in Delphi realisieren ?
Möchte Quasi diese Abfrage: (Ist ein Teil aus der Gesamt-
Query)
Delphi-Quellcode:
(CASE WHEN
(SELECT AUFTRAGERLEDIGT FROM SYSDBP.DBP_AUFTRAEGE WHERE SYSDBP.DBP_AUFTRAEGE.ANLAGENNUMMER = SYSDBP.DBP_LEISTUNGSWERTE.ANLAGENNUMMER AND SYSDBP.DBP_AUFTRAEGE.SIGMA_TAETIGKEIT_ID = '133' AND
(SYSDBP.DBP_AUFTRAEGE.AUFTRAGERLEDIGT = (SELECT MAX(SYSDBP.DBP_AUFTRAEGE.AUFTRAGERLEDIGT) FROM SYSDBP.DBP_AUFTRAEGE WHERE SYSDBP.DBP_LEISTUNGSWERTE.ANLAGENNUMMER = SYSDBP.DBP_AUFTRAEGE.ANLAGENNUMMER
SYSDBP.DBP_LEISTUNGSWERTE.ANZAHL = SYSDBP.DBP_AUFTRAEGE.DB_REGISTER AND SYSDBP.DBP_AUFTRAEGE.SIGMA_AUFTYP_ID = '50' AND SYSDBP.DBP_AUFTRAEGE.STATUS = 'abgeschlossen')))
IS NOT NULL THEN
ADD_MONTHS((SELECT AUFTRAGERLEDIGT FROM SYSDBP.DBP_AUFTRAEGE WHERE SYSDBP.DBP_AUFTRAEGE.ANLAGENNUMMER = SYSDBP.DBP_LEISTUNGSWERTE.ANLAGENNUMMER AND SYSDBP.DBP_AUFTRAEGE.SIGMA_TAETIGKEIT_ID = '133' AND
(SYSDBP.DBP_AUFTRAEGE.AUFTRAGERLEDIGT = (SELECT MAX(SYSDBP.DBP_AUFTRAEGE.AUFTRAGERLEDIGT) FROM SYSDBP.DBP_AUFTRAEGE WHERE SYSDBP.DBP_LEISTUNGSWERTE.ANLAGENNUMMER = SYSDBP.DBP_AUFTRAEGE.ANLAGENNUMMER
AND SYSDBP.DBP_LEISTUNGSWERTE.ANZAHL = SYSDBP.DBP_AUFTRAEGE.DB_REGISTER AND SYSDBP.DBP_AUFTRAEGE.SIGMA_AUFTYP_ID = '50' AND SYSDBP.DBP_AUFTRAEGE.STATUS = 'abgeschlossen'))), FESTIGKEIT_JAHRE * 12)
ELSE CASE
WHEN FESTIGKEIT_JAHRE <> 0 THEN ADD_MONTHS(TO_DATE('01.01.2006'), FESTIGKEIT_JAHRE * 12) WHEN FESTIGKEIT_JAHRE = 0 THEN NULL END
END) AS FESTIGKEITPRUEFUNG,
... dann wieder verwenden. In dem ich nur 'FESTIGKEITPRUEFUNG' in die nächste Abfrage einbauen muss.
Wie geht das mit der procedure oder function, da ich ja einen Wert an die nächste Abfrage übergeben will.
Wie rufe ich dann die Procedure oder Function 'FESTIGKEITPRUEFUNG' auf ?
Man sieht ja auch oben, das die 'SELECT AUFTRAGERLEDIGT ...' doppelt ist. Schon den Teil könnte man schön in eine PRocedure oder Function packen. Nur wie läuft das ?
Die Abfragen ergeben dann eine grosse TQuery.
Gruss
Holger