sql >> Database >  >> RDS >> Oracle

Waarom kan ik een bindvariabele niet gebruiken in een execute instant-instructie?

Bindvariabelen zijn voor het binden van variabelen, niet voor het binden van stukjes code. Het idee is dat Oracle een query of codeblok kan compileren en cachen en meerdere keren kan uitvoeren met verschillende parameters.

U probeert echter parameterbinding te gebruiken om de berekende formule te vervangen. Het zou het compileren en cachen van het codeblok verhinderen en wordt dus niet ondersteund.

Bovendien kan het niet worden uitgedrukt met de huidige syntaxis. Als Oracle tmp := :f . ziet hij denkt dat je eenvoudig de parameter f . wilt toewijzen naar de variabele tmp . Het verwacht niet dat het een functie moet evalueren.

Ga gewoon voor de werkende oplossing. Het werkt tenslotte.



  1. Datumvoorwaarden met behulp van zoeklogica

  2. Strategieën om twee mySQL-databases (op afzonderlijke locaties) synchroon te houden?

  3. Hoe een PDF-bestand op te slaan in de MySQL-database?

  4. Snelle tips over relationeel database-ontwerp voor MySQL