2011-10-20 27 views
10

Tengo una tabla llamada calendarios."fecha" como un nombre de columna

Una de sus columnas se llama 'fecha'

Cuando quiero seleccionar la columna de la fecha en que da error ORA-01747 a saber table.column válido.

select date from calendars 

Supongo que esto sucede porque 'fecha' es una palabra reservada para pl/sql. El problema es que ni siquiera es posible cambiar el nombre de la columna:

alter table calendars rename column date to date_d 

El resultado es: ORA-00904 error: identificador no válido.

¿Qué le aconseja?

Gracias.

+0

pegar 'calendarios DESC' favor – KevinDTimm

+0

Es * realmente * debe ser válida para utilizar (cualquier) palabra reservada como un nombre de columna como '" fecha "' o '[fecha]' (¿pero quizás este último sea TSQL?), pero yo no No use Oracle entonces ... ¿quizás el esquema no es el esperado? –

+0

(Por cierto, intente como sea posible, ni siquiera puedo crear una tabla en el oráculo con una columna llamada fecha) – KevinDTimm

Respuesta

16

has necesitado

select calendars.date from calendars; /* or you could alias "calendars" if you don't want to type so much */ 

Si eso no funciona o ayuda, ¿ha intentado dejar caer la columna (y quizás tratar referencia a ella con el nombre de la tabla de prefijo: calendars.date)?


También encontré este post: How do I escape a reserved word in Oracle?

Parece que Oracle va a ser entre mayúsculas y minúsculas si utiliza comillas dobles por lo

select "date" from calendars; 

no es lo mismo que

select "Date" from calendars; 
+0

ORA el error ORA-01747 cuando agrego el nombre de la tabla o alias. No intenté soltar la columna, pero no hay problema con seleccionar * de los calendarios. Así que no necesito soltar la columna si no se tomarán medidas adicionales. – bonsvr

+1

seleccione "FECHA" de los calendarios resuelto. Era FECHA, no fecha. – bonsvr

+0

La sugerencia con respecto a la distinción entre mayúsculas y minúsculas hizo el truco para mí. – mthomas

8

Intenta escapar de la palabra reservada con comillas dobles.

select "date" from calendars 
+0

ORA-00904 error – bonsvr

+0

Las comillas dobles parecen hacer que Oracle actúe con mayúsculas y minúsculas cuando busca la columna 'date'. – FrustratedWithFormsDesigner

+0

@FrustratedWithFormsDesigner Eso es verdad. El caso debe coincidir exactamente cuando se usan comillas dobles. –

1

fecha es una palabra clave reservada y por lo tanto no se puede utilizar como

fecha SELECT desde alguna mesa

puede haber múltiples soluciones para el problema

  • La columna de fecha requiere Encerrarse entre los corchetes como

SELECT [date] FROM tableName

  • encerrar la palabra clave reservada entre comillas sencillas

SELECT 'date' from tableName

  • Uso de alias

SELECT tableName.date from tableName

Cuestiones relacionadas