Bind-Variablen dienen zum Binden von Variablen, nicht zum Binden von Codeteilen. Die Idee ist, dass Oracle eine Abfrage oder einen Codeblock kompilieren und zwischenspeichern und mehrmals mit unterschiedlichen Parametern ausführen kann.
Sie versuchen jedoch, die Parameterbindung zum Ersetzen der berechneten Formel zu verwenden. Es würde das Kompilieren und Zwischenspeichern des Codeblocks verhindern und wird daher nicht unterstützt.
Außerdem kann es nicht mit der aktuellen Syntax ausgedrückt werden. Wenn Oracle tmp := :f
sieht es denkt, dass Sie einfach den Parameter f
zuweisen möchten in die Variable tmp
. Es wird nicht erwartet, eine Funktion auswerten zu müssen.
Gehen Sie einfach mit der funktionierenden Lösung. Es funktioniert doch.