sql >> Base de Datos >  >> RDS >> Oracle

Cómo resolver la expresión faltante ORA-00936

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