ORA-00900 ongeldige SQL-instructie is een van de meest voorkomende fouten
Dit is wat de Oracle-documentatie over deze fout zegt
Referentie:Oracle-documentatie
Checklist om de ORA-00900 ongeldige SQL-instructie op te lossen
(1) Deze fout treedt vaak op wanneer u een Oracle-procedure probeert te maken en de procedurele optie niet is geïnstalleerd. Om te bepalen of de procedurele optie is geïnstalleerd, opent u een Oracle-sessie met SQL*Plus. Als de PL/SQL-banner niet wordt weergegeven, weet u dat de procedurele optie niet is geïnstalleerd.
(2) ORA-00900 kan optreden bij een poging om een databasekoppeling te gebruiken. Veel gebruikers merken dat ze ORA-00900 tegenkomen wanneer ze proberen velden te doorzoeken die mogelijk vóór 2000 hebben gewerkt. Om ORA-00900 op te lossen, probeert u in de lokale database uw init.ora-parameter NLS_DATE_FORMAT te wijzigen en gebruikt u vervolgens dubbele aanhalingstekens (in plaats van enkel) rond de waarde
alter session set NLS_DATE_FORMAT = "DD-MON-YYYY";
(3) Execute-instructie gebruiken op sql-ontwikkelaar /JDBC-verbinding
execute dbms_utility.analyze_schema('OKX','ESTIMATE',30); ORA-00900: invalid SQL statement
execute is sqlplus optie, we zouden een van de onderstaande opties moeten gebruiken in applicatie/andere taalprogramma's
begin execute dbms_utility.analyze_schema('OKX','ESTIMATE',30); end; or begin execute dbms_utility.analyze_schema('OKX','ESTIMATE',30) end; /
(4) Vaak maken ontwikkelaars fouten in het plsql-blok en schrijven ze uitspraken als
v_dynsql:='dbms_utility.analyze_schema('OKX','ESTIMATE',30)'; execute immediate v_dynsql;
De bovenstaande code geeft ORA-00900 als dbms_utility.analyze_schema(‘OKX’,’ESTIMATE’,30);
is geen geldige verklaring
De oplossing is om begin en einde te gebruiken zoals hieronder aangegeven
v_dynsql:= q'[BEGIN dbms_utility.analyze_schema('OKX','ESTIMATE',30); END;]'; execute immediate v_dynsql;
(5) Als u een tabel in PLSQL wilt beschrijven
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
U kunt desc hier niet gebruiken. we willen het misschien selecteren op basis van zoekopdracht
begin execute immediate q'[select COLUMN_NAME,DATA_TYPE from all_tab_columns where table_name = 'FND_USER' order by column_id]'; end; /
(6) Als u het plan probeert uit te leggen bij het maken van een weergaveverklaring
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
Ik hoop dat je de verschillende manieren leuk vindt om de ORA-fouten op te lossen. Geef er alstublieft feedback over
Gerelateerde artikelen
ORA-00911:ongeldig teken
ORA-29913:fout bij het uitvoeren van ODCIEXTTABLEOPEN-aanroep
ORA-27154:aanmaken van post/wait mislukt tijdens opstarten
ORA-01111
ORA -00257:archiveringsfout, alleen intern verbinden tot vrijgemaakt
ora-29283:ongeldige bestandsbewerking