Descripción
ORA-00936:expresión faltante es uno de los errores comunes que todos los que trabajan en Oracle SQL deben haber enfrentado en algún momento. Esto generalmente sucede cuando omite algo importante en la instrucción Sql, es decir, omite una parte importante de lo que estaba tratando de ejecutar
Referencia :Documentación de Oracle
Causa de ORA-00936:expresión faltante
Este error de Oracle está relacionado principalmente con las declaraciones SQL SELECT. Una razón obvia es que falta la lista de columnas seleccionadas o que las expresiones en las columnas seleccionadas están incompletas.
Lista de verificación para ejecutar para resolver el error de expresión faltante ORA-00936
(1) Ocurre cuando se olvida de incluir la columna en la declaración de selección
Seleccionar de mrp_detalles;seleccionar de mrp_detalles;ERROR en la línea 1:ORA-00936:expresión faltante
La forma correcta sería enumerar la columna que desea seleccionar
Seleccione col1,col2 de mrp_detalles;
(2) A veces cometemos errores en el uso de la declaración Distinct. La siguiente declaración fallará con ORA-00936
seleccione distintos a, b,c,d, distintos e de tab_exampledonde b='ABCD' y c =1 y d='JOHN'ERROR en la línea 1:ORA-00936:expresión faltante
Tener dos cláusulas distintas no tiene sentido y da error
Otro ejemplo
seleccione a, b,c,d, e distinto de tab_exampledonde b='ABCD' y c =1 y d='JOHN'ERROR en la línea 1:ORA-00936:expresión faltante
distinguible solo se puede usar al principio
Entonces la declaración correcta sería
seleccione distintos a, b,c,d, e de tab_example donde b='ABCD' y c =1 y d='JOHN'
(3) Este error se produce cuando se omite parte de la expresión, algunos ejemplos son
seleccione 2**8 de dual; seleccione 2**8 de dual;ERROR en la línea 1:ORA-00936:expresión faltante
** los operadores funcionan en PLSQL pero no en SQL, necesitamos usar la función Power para ello, por lo que la forma correcta sería
seleccione power(2,3) de dual;POWER(2,3)--------8
(4) Otro ejemplo
seleccione nombre_depto||' '|| from dept;select dept_name||' '|| de deptERROR en la línea 1:ORA-00936:expresión faltante
Aquí olvida mencionar el nombre de la columna después del operador de concatenación, el SQL correcto sería
seleccione nombre_depto||' '||dept_no from dept;
(5) Cuando agrega comas adicionales en la lista de la columna
seleccione dept_no, dept_name, dept_location from dept_table;select dept_no, dept_name, dept_location from dept_table;ERROR en la línea 1:ORA-00936:expresión faltante
Entonces, debemos verificar dos veces la declaración SQL cuando encontramos este error y asegurarnos de que estamos cometiendo el error común
(6) Este error también aparecerá si omite el From en la instrucción SQL
seleccione número_depto, nombre_depto, ubicación_depto donde nombre_depto como 'A%';
Aquí olvidamos mencionar la cláusula from. La declaración SELECT tiene tres partes:a saber:“SELECT->FROM->WHERE
Puede omitir la cláusula where pero seleccionar y from son necesarios
seleccione número_depto, nombre_depto, ubicación_depto de tabla_depto donde nombre_depto como 'A%';(7) También puede ocurrir en la declaración de inserción como a continuación
insertar en la tabla 1 (col1, col2) los valores seleccionados col1, col2 de la tabla 2; ERROR en la línea 1:ORA-00936:expresión faltante
No necesitamos valores como en esta declaración
insertar en la tabla1 (col1,col2) seleccionar col1,col2 de la tabla2;(8) A veces podemos mezclar funciones definidas por el usuario y funciones de Oracle, y hacerlo puede dar lugar a una sintaxis confusa que generaría un mensaje de error. Evítelas
(9) También hay algunos errores de Oracle
(a) Error:4567818 Base Bug#:4192148 – no publicado en 9207
(b) Error:4212516 (no publicado) en Oracle 10.1.0.4.0.
Con estos errores, se genera el error ORA-00936 cuando falla la vista SELECT ON. Básicamente, se lanza ORA-00936 cuando se crea una vista SQL desde "crear o reemplazar la vista MI_VISTA como seleccionar t.*, otra_ficha_col de la pestaña t, otra_ficha". Esto crea una definición de vista que es incorrecta en DBA_VIEWS, lanzando así ORA- 00936 y posibles volcados del núcleo. Para corregir los errores y resolver ORA-00936, MetaLink ofrece estas soluciones para la versión adecuada:
Corrección para 9.2.0.7:el parche 4192148 está disponible para sistemas basados en Solaris (64 bits) y AIX5L (64 bits). Corrección para 10.1.0.4:
El parche 4212516 está disponible para la mayoría de las plataformas.En pocas palabras, ORA-00936 expresión faltante se puede resolver revisando cuidadosamente su declaración SQL.
Artículos relacionados
ORA-00911:carácter no válido
ORA-03113:fin de archivo en el canal de comunicación
ORA-00257
ORA-27154:error en la creación de publicación/espera durante el inicio
ORA-29913 con tablas externas
ora-20001 en Gather schema stats on 11g(FND_HISTOGRAM_COLS)
Concurrent Manager:cleanup_node falló debido a ORA-01427