Doppelte Anführungszeichen in Oracle-Spalte Aliase
Ok, das ist etwas obskure Frage, aber ich hoffe, jemand kann mir helfen.
System ich arbeite, baut eine dynamische SQL-Zeichenfolge für die Ausführung innerhalb einer gespeicherten Prozedur, und ein Teil dieses dynamischen SQL-Definition der Spalte Aliase, die sich tatsächlich abgerufenen Werte aus einer anderen Tabelle von user-generierten Daten.
So, zum Beispiel, der string könnte so Aussehen;
SELECT table1.Col1 AS "This is an alias" FROM table1
Diese funktioniert einwandfrei. Jedoch, der Wert, der verwendet wird für den alias kann möglicherweise mit double-quote-Zeichen, die Pausen, die äußeren Anführungszeichen. Ich dachte, ich könnte vielleicht entkommen doppelten Anführungszeichen innerhalb der alias-irgendwie, aber ich habe kein Glück gehabt, herauszufinden, wie Sie dies tun. Backslash funktioniert es nicht und mit zwei doppelten Anführungszeichen hintereinander dieser Fehler führt;
SQL Error: ORA-03001: unimplemented feature
03001. 00000 - "unimplemented feature"
*Cause: This feature is not implemented.
Hat jemand schon Erfahrung mit diesem Problem vor?
Cheers für jede Einsicht jedermann hat.
p.s. die Anführungszeichen sind notwendig, um die Aliase, denn Sie können keine Leerzeichen enthalten.
InformationsquelleAutor Christopher McAtackney | 2008-09-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie einfach setzen Sie ein anderes Zeichen anstelle von doppelten Anführungszeichen, und ersetzen Sie ihn mit doppelten Anführungszeichen in den code?
Etwas wie dieses:
Dann einfach ersetzen Sie | mit ".
Ich weiß, es ist ein hack, aber ich kann mir nicht vorstellen, dass es eine bessere Lösung... Und was Sie tun es gibt einen hack sowieso. Der "nette" Weg wäre, die Werte auswählen und in der Spalte einzeln angeben, und ordnen Sie diese in Ihrem code. Das wäre viel sauberer.
InformationsquelleAutor ibz
verwenden Sie die Oracle-Zitat Betreiber:
'#' kann ersetzt werden durch ein beliebiges Zeichen
InformationsquelleAutor swissunix
Wenn ich dies ausführen:
Oracle gibt diese (beachten Sie die Oracle-generierten Spalte name):
Die Tatsache, dass Oracle die Spalte name nicht meine double-quote sagt mir, dass Oracle wahrscheinlich nicht stellen.
Beste Wette, soweit ich sehen kann, ist der Streifen double-quotes von deinen Daten vor der Verwendung von Spaltennamen. Leider wird auch verlangen, dass Sie das gleiche tun filtern, wenn Sie wählen Sie diese Spalten, aber ich sehe keine andere Möglichkeit.
InformationsquelleAutor JosephStyons
einer möglicherweise fruchtbaren Teil der Untersuchung würde sein, mit Blick in die Zitat-Methode.
my $quotedString = $dbh- > quote( $string );
InformationsquelleAutor EvilTeach
Diesem Versuch, zwei einzelne Anführungszeichen tatsächlich Aussehen wie ein Anführungszeichen ausgegeben:
select 1 as "University ''John Smith''" from dual;
InformationsquelleAutor Artem