2012-07-24 11 views
12

Ich habe eine alte Tabelle, die eine Spalte namens "RANK" hat und dieser Name ist ein Schlüsselwort in Oracle, Ich weiß nicht, wie diese Tabelle erstellt und ich kann diese Spalte nicht umbenennen, weil es von anderen Anwendungen verwendet wird. Jetzt brauche ich Daten in dieser Tabelle einzufügen:Wie behandelt Tabellenspalte mit reserviertem SQL-Schlüsselwort?

insert into mytbl (RANK) 
select RANK from other_table 

wenn diese Abfrage ausgeführt ich folgende Fehlermeldung bekam:

ORA-00907: rechte Klammer

Bitte fehlt, wie kann ich Löse dieses Problem?

Danke.

+2

@Madhivanan - vor relativ kurzer Zeit RANK wurde in das Oracle-Lexikon eingeführt. Es ist nicht möglich, die Datenmodelle von Altsystemen zu ändern. – APC

Antwort

17

Oracle verwendet doppelte Anführungszeichen ", um reservierte Wörter zu umgehen.

insert into mytbl ("RANK") 
select "RANK" 
from other_table 

Eine andere Anmerkung, Oracle erfordert auch korrekten Fall.

5

Zunächst sollten Sie reservierte Schlüsselwörter nicht als Spaltenname und Tabellenname verwenden.

Oracle verwendet doppelte Anführungszeichen ", um reservierte Schlüsselwörter zu analysieren, damit Sie die Schlüsselwörter parsen können, indem Sie sie in doppelte Anführungszeichen setzen "".

insert into mytbl ("RANK") 
select "RANK" 
from other_table 
0

In meinem Fall gibt es, in meiner Abfrage.

UPDATE SCHEMA.TABLE SET PART_NO = '1S7F530400', WHERE PART_NO = '1S7?F5304?00'; 

sollte sein:

UPDATE SCHEMA.TABLE SET PART_NO = '1S7F530400' WHERE PART_NO = '1S7?F5304?00';