Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment résoudre ORA-00900

ORA-00900 L'instruction SQL invalide est l'une des erreurs courantes
Voici ce que dit la documentation Oracle à propos de cette erreur

Référence :documentation Oracle

Liste de contrôle pour résoudre l'instruction SQL invalide ORA-00900

(1) Cette erreur se produit généralement lorsque vous essayez de créer une procédure Oracle et que l'option procédurale n'est pas installée. Pour déterminer si l'option procédurale a été installée, ouvrez une session Oracle à l'aide de SQL*Plus. Si la bannière PL/SQL ne s'affiche pas, vous savez que l'option procédurale n'a pas été installée.

(2) ORA-00900 peut se produire lors de la tentative d'utilisation d'un lien de base de données. De nombreux utilisateurs constatent qu'ils rencontrent ORA-00900 lorsqu'ils tentent d'interroger des champs qui peuvent avoir fonctionné avant 2000. Pour résoudre ORA-00900, sur la base de données locale, essayez de modifier votre paramètre init.ora NLS_DATE_FORMAT, puis utilisez des guillemets doubles (au lieu de single) autour de la valeur


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

(3) Utilisation de l'instruction d'exécution sur le développeur sql/la connexion JDBC

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

execute est l'option sqlplus, nous devons utiliser l'une des options ci-dessous dans les programmes d'application/autres langages

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

(4) Souvent, les développeurs font des erreurs dans le bloc plsql et écrivent des instructions comme

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

Le code ci-dessus donne ORA-00900 comme dbms_utility.analyze_schema('OKX','ESTIMATE',30);
n'est pas une déclaration valide

Le correctif consiste à utiliser le début et la fin comme indiqué ci-dessous

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

(5) Si vous voulez décrire une table 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

Vous ne pouvez pas utiliser desc ici. nous pouvons vouloir le sélectionner en fonction de la requête

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 vous essayez d'expliquer le plan sur la déclaration de création de vue

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

J'espère que vous aimez les différentes façons de corriger les erreurs ORA. Merci de nous faire part de vos commentaires

Articles connexes
ORA-00911 :caractère non valide
ORA-29913 :erreur lors de l'exécution de l'appel ODCIEXTTABLEOPEN
ORA-27154 :échec de la création post/attente au démarrage
ORA-01111
ORA -00257 :erreur de l'archiveur, connexion interne uniquement jusqu'à la libération
ora-29283 :opération de fichier invalide