Hallo Zusammen,
ich habe wieder eine Frage zu einer SQL Abfrage in einer gespeicherten Prozedur und hoffe, dass ihr mir noch mal behilflich sein könnt.
Bei dieser Abfrage ist es so, dass auch hier wieder eine SQL Funktion im SELECT Statement aufgerufen wird. (siehe Frage zu SQL Abfrage)
Leider wird diese Funktion viel zu oft unnötig aufgerufen, weil sich der entscheidene Wert z.B. WERT4 nicht oft ändert und somit sich also der Rückgabewert ebenso nicht oft ändert.
Ich habe mir sowas in der Art vorgestellt:
Rufe die Funktion nur dann auf, wenn sich der Wert z.B. hier also z.B. WERT4 geändert hat, ansosnten nehme den zwischengespeicherten Rückgabewert der Funktion.
Also eine Lösung mit CASE z.B.:
Ist solch eine Auswertung innerhalb eines SELECTs möglich und für den Fall, wie würde man dies sinnvoll gestalten?
Ich wäre für Tipps und Vorschläge sehr dankbar.
Viele Grüße
Pierre
ich habe wieder eine Frage zu einer SQL Abfrage in einer gespeicherten Prozedur und hoffe, dass ihr mir noch mal behilflich sein könnt.
Code:
SELECT WERT1, WERT2, WERT3, WERT4, dbo.xyz_FUNKTION1(WERT1, WERT2, WERT3, WERT4) AS PREIS FROM TAB1 WHERE (WERT1 = @Param1) AND (WERT2 = @Param2) AND (WERT3 = @Param3) ORDER BY WERT1
Leider wird diese Funktion viel zu oft unnötig aufgerufen, weil sich der entscheidene Wert z.B. WERT4 nicht oft ändert und somit sich also der Rückgabewert ebenso nicht oft ändert.
Ich habe mir sowas in der Art vorgestellt:
Rufe die Funktion nur dann auf, wenn sich der Wert z.B. hier also z.B. WERT4 geändert hat, ansosnten nehme den zwischengespeicherten Rückgabewert der Funktion.
Also eine Lösung mit CASE z.B.:
Code:
SELECT WERT1, WERT2, WERT3, CASE WERT4 WHEN @LastValueEqual_WERT4 THEN @StoredValueFromFunction ELSE dbo.xyz_FUNKTION1(WERT1, WERT2, WERT3, WERT4) AS 'PREIS' END FROM TAB1 WHERE (WERT1 = @Param1) AND (WERT2 = @Param2) AND (WERT3 = @Param3) ORDER BY WERT1
Ist solch eine Auswertung innerhalb eines SELECTs möglich und für den Fall, wie würde man dies sinnvoll gestalten?
Ich wäre für Tipps und Vorschläge sehr dankbar.
Viele Grüße
Pierre
Comment