Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Por que não posso usar uma variável de ligação em uma instrução de execução imediata?


As variáveis ​​de ligação são para variáveis ​​de ligação, não para partes de código de ligação. A ideia é que o Oracle possa compilar e armazenar em cache uma consulta ou bloco de código e executá-lo várias vezes com diferentes parâmetros.

No entanto, você tenta usar a associação de parâmetros para substituir a fórmula calculada. Isso impediria a compilação e o armazenamento em cache do bloco de código e, portanto, não é suportado.

Além disso, não pode ser expresso com a sintaxe atual. Se o Oracle vir tmp := :f ele pensa que você simplesmente deseja atribuir o parâmetro f para a variável tmp . Ele não espera ter que avaliar uma função.

Basta ir com a solução de trabalho. Afinal funciona.