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

Cómo resolver ORA-00900

ORA-00900 La instrucción SQL no válida es uno de los errores comunes
Esto es lo que dice la documentación de Oracle sobre este error

Referencia:documentación de Oracle

Lista de verificación para resolver la declaración SQL no válida ORA-00900

(1) Este error suele ocurrir cuando intenta crear un procedimiento de Oracle y la opción de procedimiento no está instalada. Para determinar si se instaló la opción de procedimiento, abra una sesión de Oracle con SQL*Plus. Si el anuncio de PL/SQL no aparece, entonces sabrá que la opción de procedimiento no se ha instalado.

(2) ORA-00900 puede ocurrir al intentar usar un enlace de base de datos. Muchos usuarios descubren que se encuentran con ORA-00900 cuando intentan consultar campos que pueden haber funcionado antes de 2000. Para resolver ORA-00900, en la base de datos local, intente modificar su parámetro init.ora NLS_DATE_FORMAT, luego use comillas dobles (en lugar de solo) alrededor del valor


alter session set NLS_DATE_FORMAT = "DD-MON-YYYY";

(3) Uso de la instrucción de ejecución en la conexión JDBC/desarrollador sql

execute dbms_utility.analyze_schema('OKX','ESTIMATE',30);
ORA-00900: invalid SQL statement

ejecutar es la opción sqlplus, debemos usar cualquiera de las siguientes opciones en la aplicación/otros programas de lenguaje

begin
execute dbms_utility.analyze_schema('OKX','ESTIMATE',30);
end;
or
begin
execute dbms_utility.analyze_schema('OKX','ESTIMATE',30)
end;
/

(4) Muchas veces los desarrolladores cometen errores en el bloque plsql y escriben sentencias como

v_dynsql:='dbms_utility.analyze_schema('OKX','ESTIMATE',30)';
execute immediate v_dynsql;

El código anterior da ORA-00900 como dbms_utility.analyze_schema('OKX','ESTIMATE',30);
no es una afirmación válida

La solución es usar begin y end como se indica a continuación

v_dynsql:=
q'[BEGIN
dbms_utility.analyze_schema('OKX','ESTIMATE',30);
END;]';
execute immediate v_dynsql;

(5) Si desea describir una tabla en PLSQL

SQL> begin execute immediate 'describe FND_USER';
2 end;
3 /
begin execute immediate 'describe FND_USER';
*
ERROR at line 1:
ORA-00900: invalid SQL statement
ORA-06512: at line 1

No puede usar desc aquí. es posible que queramos seleccionarlo según la consulta

begin
execute immediate q'[select COLUMN_NAME,DATA_TYPE
from all_tab_columns
where table_name = 'FND_USER'
order by column_id]';
end;
/

(6) Si está tratando de explicar el plan sobre la declaración de creación de vista

SQL> explain plan for create view test as select * from dual;
explain plan for create view test as select * from dual
*
ERROR at line 1:
ORA-00900: invalid SQL statement

Espero que le gusten las diversas formas de corregir los errores de ORA. Por favor, envíe sus comentarios al respecto

Artículos relacionados
ORA-00911:carácter no válido
ORA-29913:error al ejecutar la llamada ODCIEXTTABLEOPEN
ORA-27154:error de creación posterior/espera durante el inicio
ORA-01111
ORA -00257:error del archivador, conexión interna solo hasta que se libere
ora-29283:operación de archivo no válida