2012-07-24 24 views
12

Tengo una vieja tabla que tiene una columna llamada "RANK" y este nombre es una palabra clave en Oracle, No sé cómo se creó esta tabla y no puedo cambiar el nombre de esta columna porque la usan otras aplicaciones. ahora tengo que insertar datos en esta tabla:¿Cómo se maneja la columna de tabla nombrada con la palabra clave Sql reservada?

insert into mytbl (RANK) 
select RANK from other_table 

al ejecutar esta consulta me dieron el siguiente error:

ORA-00907: falta paréntesis derecho

Por favor, ¿cómo puedo ¿resuelve este problema?

Gracias.

+2

@Madhivanan - RANK se introdujo en el léxico de Oracle hace relativamente poco tiempo. Sin embargo, no es posible cambiar los modelos de datos de los sistemas heredados. – APC

Respuesta

17

Oracle utiliza comillas dobles " para escapar palabras reservadas.

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

Otra nota, Oracle también requiere la carcasa correcta.

5

En primer lugar, no deberá utilizar palabras clave reservadas como nombre de columna y tabla.

Oracle utiliza comillas dobles " para analizar palabras clave reservadas para que pueda analizar las palabras clave colocándolo en dobles comillas "".

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

En mi caso, hay, en mi consulta.

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

Esto debería ser:

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