Variabel ikat adalah untuk mengikat variabel, bukan untuk mengikat potongan kode. Idenya adalah Oracle dapat mengkompilasi dan men-cache kueri atau blok kode dan mengeksekusinya beberapa kali dengan parameter yang berbeda.
Namun, Anda mencoba menggunakan pengikatan parameter untuk mengganti rumus yang dihitung. Ini akan mencegah kompilasi dan caching blok kode dan karenanya tidak didukung.
Selain itu, tidak dapat diekspresikan dengan sintaks saat ini. Jika Oracle melihat tmp := :f
sepertinya Anda ingin menetapkan parameter f
ke variabel tmp
. Itu tidak mengharapkan harus mengevaluasi suatu fungsi.
Ikuti saja solusi yang berfungsi. Bagaimanapun, ini berhasil.