sql >> Databasteknik >  >> RDS >> Oracle

Är det möjligt att referera till kolumnnamn via bindningsvariabler i Oracle?

Nej. Du kan inte använda bindningsvariabler för tabell- eller kolumnnamn.

Denna information behövs för att skapa genomförandeplanen. Utan att veta vad du vill beställa efter skulle det till exempel vara omöjligt att komma på vilket index du ska använda.

Istället för bindningsvariabler måste du direkt interpolera kolumnnamnet i SQL-satsen när ditt program skapar den. Förutsatt att du vidtar försiktighetsåtgärder mot SQL-injektion finns det ingen nackdel med det.

Uppdatering: Om du verkligen ville hoppa genom bågar skulle du förmodligen kunna göra något liknande

order by decode(?, 'colA', colA, 'colB', colB)

men det är bara dumt. Och långsamt. Gör inte det.



  1. Hur Pi() fungerar i PostgreSQL

  2. I MySQL, ska jag citera siffror eller inte?

  3. Uppdatera flera kolumner i SQL

  4. Android Realm som hanterar primärnyckel i relationsobjekt