sql >> Database >  >> RDS >> Oracle

Hoe ORA-00900 op te lossen?

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


  1. Inzicht in de effecten van hoge latentie in MySQL- en MariaDB-oplossingen met hoge beschikbaarheid

  2. Hoe haal je de datum van de mms uit content://mms.

  3. MySQL kan geen beperking voor externe sleutels toevoegen

  4. SQL selecteer max(datum) en bijbehorende waarde