Oracle/PLSQL: mensaje de error ORA-00904

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

Oracle/PLSQL: mensaje de error ORA-00904

Aprenda por qué y cómo resolver los mensajes de error ORA-00904 en Oracle.

describir

Cuando encuentra un error ORA-00904, aparece el siguiente mensaje de error:

  • ORA-00904: identificador no válido

razón

Intentó ejecutar una instrucción SQL con un nombre de columna no válido o faltante. Esto suele suceder cuando hace referencia a un alias no válido en una instrucción SELECT.

resolver

Las opciones para resolver este error de Oracle incluyen:

Opción 1

Vuelva a escribir su SQL para incluir nombres de columna válidos. Para que sea un nombre de columna válido, se deben cumplir las siguientes condiciones:

  • Los nombres de las columnas deben comenzar con una letra.
  • Los nombres de las columnas no pueden superar los 30 caracteres.
  • Los nombres de las columnas deben constar de caracteres alfanuméricos o los siguientes caracteres especiales: $, _ y #. Si el nombre de la columna usa otros caracteres, debe estar entre comillas dobles.
  • Los nombres de las columnas no pueden ser palabras reservadas.

Veamos un ejemplo de cómo resolver un error ORA-00904. Por ejemplo, si ejecuta la siguiente instrucción SELECT, recibirá un error ORA-00904:

SQL> SELECT contact_id AS "c_id", last_name, first_name
  2  FROM contacts
  3  ORDER BY "cid";
ORDER BY "cid"
         *
ERROR at line 3:
ORA-00904: "cid": invalid identifier

Este error se creó al asignar un alias a la columna, pero luego se ingresó el alias incorrecto. En este ejemplo, creamos un alias llamado “c_id” para contact_id, pero luego lo llamamos “cid” en la cláusula ORDER BY.

Para corregir este error, podemos modificar la declaración SELECT para usar el alias correcto en la cláusula ORDER BY de la siguiente manera:

SQL> SELECT contact_id AS "c_id", last_name, first_name
  2  FROM contacts
  3  ORDER BY "c_id";

10 rows selected
(Visited 17 times, 1 visits today)