2009-07-22 28 views
98

En TSQL podría usar algo como Select [table] from tablename para seleccionar una columna llamada "tabla".¿Cómo puedo escapar de una palabra reservada en Oracle?

¿Cómo puedo hacer esto para las palabras reservadas en el oráculo?

Editar: he tratado de corchetes, comillas dobles, comillas simples y comillas inversas, que no funcionan ...

Como aclaración, tengo una columna que alguien llamado comentario. Como esta es una palabra reservada, Oracle está lanzando un tambaleante intento de seleccionar con ella, falla al analizar la consulta. Lo intenté Seleccionar "comentar" de tablename pero no funcionó. Verificaré el caso y regresaré.

+0

posible duplicado de [Oracle: ¿Qué es exactamente lo que entre comillas el nombre de la tabla hacer] (http://stackoverflow.com/questions/563090/oracle-what-exactly-do -quotation-marks-around-the-table-name-do) – user123444555621

Respuesta

151

De una búsqueda rápida, Oracle parece utilizar comillas dobles (", por ejemplo "table") y aparentemente requiere el caso correcto -Considerando que, para cualquier persona interesada, por defecto de MySQL a usar invertidas (`), excepto cuando se establece en utilizar el doble citas de compatibilidad.

+0

Oye, podría estar equivocado, pero ¿podría la persona que sabía que estaba equivocado publicar la respuesta correcta? – eyelidlessness

+1

Te marqué porque intenté escapar de la palabra con comillas dobles y no funcionó. – Spence

+0

Volveré a verificar todo y regresaré y lo marcaré correctamente si consigo que funcione con comillas dobles. – Spence

3

Oracle utiliza comillas dobles, pero lo más probable es que necesite colocar el nombre del objeto en mayúsculas, p. Ej. "MESA". De forma predeterminada, si crea un objeto sin comillas dobles, p.

CREATE TABLE table AS ... 

Oracle crearía el objeto como mayúsculas. Sin embargo, la referencia no distingue entre mayúsculas y minúsculas a menos que utilice comillas dobles.

29

Oracle normalmente requiere comillas dobles para delimitar el nombre de los identificadores en las sentencias SQL, p. Ej.

SELECT "MyColumn" AS "MyColAlias" 
FROM "MyTable" "Alias" 
WHERE "ThisCol" = 'That Value'; 

Sin embargo, amablemente permite omitir las comillas dobles, en cuyo caso se convierte en silencio el identificador a mayúsculas:

SELECT MyColumn AS MyColAlias 
FROM MyTable Alias 
WHERE ThisCol = 'That Value'; 

consigue internamente convertir en algo como:

SELECT "ALIAS" . "MYCOLUMN" AS "MYCOLALIAS" 
FROM "THEUSER" . "MYTABLE" "ALIAS" 
WHERE "ALIAS" . "THISCOL" = 'That Value'; 
-7

debe cambiar el nombre de la columna a otro nombre porque TABLE está reservado por Oracle.

Puede ver todas las palabras reservadas de Oracle en la vista de Oracle V$RESERVED_WORDS.

+0

Obtengo 'ORA-00942' cuando intento 'seleccionar * desde V $ RESERVED_WORDS'. – ceving

3

comillas dobles trabajadas en Oracle cuando tenía la palabra clave como uno de los nombres de columna.

por ejemplo:

Cuestiones relacionadas