sql >> Databasteknik >  >> RDS >> Oracle

Varför kan jag inte använda en bindningsvariabel i en execute immediate-sats?

Bindningsvariabler är för bindande variabler, inte för bindande kodbitar. Tanken är att Oracle kan kompilera och cache en fråga eller kodblock och exekvera det flera gånger med olika parametrar.

Du försöker dock använda parameterbindning för att ersätta den beräknade formeln. Det skulle förhindra kompilering och cachelagring av kodblocket och stöds därför inte.

Dessutom kan det inte uttryckas med den aktuella syntaxen. Om Oracle ser tmp := :f den tror att du helt enkelt vill tilldela parametern f till variabeln tmp . Den förväntar sig inte att behöva utvärdera en funktion.

Gå bara med den fungerande lösningen. Det fungerar trots allt.



  1. Hur man återställer MySQL-dump från värd till Docker-behållare

  2. Hur kan jag abstrahera mysqli-förberedda uttalanden i PHP?

  3. Fysisk plats för FILESTREAM-data

  4. Uppdatera ett databaspostkonto (SSMS)