Ich versuche, auf einen Spaltennamen zu verweisen, um eine Abfrage in einer Anwendung zu bestellen, die mit einer Oracle-Datenbank kommuniziert. Ich möchte eine Bind-Variable verwenden, damit ich dynamisch bestimmen kann, wofür die Abfrage angeordnet werden soll.Kann man in Oracle über Bind-Variablen auf Spaltennamen verweisen?
Das Problem, das ich habe, ist, dass die Datenbank die Reihenfolge nach Spalte zu ignorieren scheint.
Weiß jemand, ob es eine bestimmte Möglichkeit gibt, über eine Bindevariable auf eine Datenbankspalte zu verweisen, oder ob es überhaupt möglich ist?
zB meine Abfrage ist
SELECT * FROM PERSON ORDER BY :1
(wo :1
zu PERSON.NAME
gebunden wird) Die Abfrage wird nicht Ergebnisse in alphabetischer Reihenfolge der Rückkehr, ich mache mir Sorgen, dass die Datenbank dies als interpretiert: -
SELECT * FROM PERSON ORDER BY 'PERSON.NAME'
die offensichtlich nicht funktioniert.
Alle Vorschläge werden sehr geschätzt.
+1 btw Ich weiß nicht, ob das für Oracle gilt, aber es gibt definitiv einen Nachteil in anderen Datenbanken (wie DB2) - es macht viel schwieriger für die Datenbank, Abfragen zwischenzuspeichern, wenn Sie den Text des Abfragebefehls ändern Zeit (und nicht nur die Werte der Parameter) –
Das passiert auch in Orakel. Aber Sie ändern den Befehlstext nicht ständig.Es gibt nur wenige Optionen für den Spaltennamen, sodass nur fünf Cache-Einträge vorhanden sind. – Thilo
Vielen Dank, das macht Sinn für mich. Ich werde versuchen, den Code zu verstehen, wenn er die order by-Klausel betrachtet, und wenn er eine bind-Variable enthält, werde ich ihn durch seinen Wert ersetzen. – Scottm