Oracle
 sql >> Database >  >> RDS >> Oracle

Perché non posso usare una variabile bind in un'istruzione di esecuzione immediata?

Le variabili di associazione servono per l'associazione di variabili, non per l'associazione di parti di codice. L'idea è che Oracle possa compilare e memorizzare nella cache una query o un blocco di codice ed eseguirlo più volte con parametri diversi.

Tuttavia, si tenta di utilizzare l'associazione di parametri per sostituire la formula calcolata. Impedrebbe la compilazione e la memorizzazione nella cache del blocco di codice e quindi non è supportato.

Inoltre, non può essere espresso con la sintassi corrente. Se Oracle vede tmp := :f pensa che tu voglia semplicemente assegnare il parametro f alla variabile tmp . Non si aspetta di dover valutare una funzione.

Basta andare con la soluzione funzionante. Dopotutto funziona.