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

Hvorfor kan jeg ikke bruge en bind-variabel i en execute immediate-sætning?

Bind-variabler er til bindingsvariabler, ikke til binding af kodestykker. Ideen er, at Oracle kan kompilere og cache en forespørgsel eller kodeblok og udføre den flere gange med forskellige parametre.

Du forsøger dog at bruge parameterbinding til at erstatte den beregnede formel. Det ville forhindre kompilering og cachelagring af kodeblokken og er derfor ikke understøttet.

Desuden kan det ikke udtrykkes med den aktuelle syntaks. Hvis Oracle ser tmp := :f den mener, at du simpelthen vil tildele parameteren f til variablen tmp . Den forventer ikke at skulle evaluere en funktion.

Bare gå med den fungerende løsning. Det virker trods alt.



  1. SQL:Hvordan ville du opdele 100.000 poster fra en Oracle-tabel i 5 bidder?

  2. Laravel Model Query Error :Illuminate\Database\QueryException:SQLSTATE[23000]:Integritetsbegrænsning overtrædelse

  3. Hvordan kan jeg oprette forbindelse til SQL Server fra en Mac med PHP PDO?

  4. PostgreSQL 9.3 trigger funktion til at indsætte i tabel med parameteriseret navn