sql >> Database teknologi >  >> RDS >> Oracle

Sådan løses ORA-00900

ORA-00900 ugyldig SQL-sætning er en af ​​de almindelige fejl
Her er, hvad Oracle-dokumentationen siger om denne fejl

Reference:Oracle-dokumentation

Tjekliste for at løse den ugyldige SQL-sætning ORA-00900

(1) Denne fejl opstår ofte, når du forsøger at oprette en Oracle-procedure, og Procedural Option ikke er installeret. For at afgøre, om den proceduremæssige mulighed er blevet installeret, skal du åbne en Oracle-session ved hjælp af SQL*Plus. Hvis PL/SQL-banneret ikke vises, ved du, at Procedural Option ikke er blevet installeret.

(2) ORA-00900 kan opstå under forsøg på at bruge et databaselink. Mange brugere oplever, at de støder på ORA-00900, da de forsøger at forespørge felter, der kan have fungeret før 2000. For at løse ORA-00900, på den lokale database, prøv at ændre din init.ora-parameter NLS_DATE_FORMAT, og brug derefter dobbelte anførselstegn (i stedet for enkelt) omkring værdien


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

(3) Brug af execute-sætning på sql-udvikler /JDBC-forbindelse

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

execute er sqlplus-indstillingen, bør vi bruge en af ​​nedenstående muligheder i applikations-/andre sprogprogrammer

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

(4) Mange gange laver udviklere fejl i plsql-blokken og skriver udsagn som

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

Ovenstående kode giver ORA-00900 som dbms_utility.analyze_schema('OKX','ESTIMATE',30);
er ikke en gyldig erklæring

Rettelsen er at bruge start og slut som angivet nedenfor

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

(5) Hvis du ønsker at beskrive en tabel i 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

Du kan ikke bruge desc her. vi vil måske vælge det baseret på forespørgsel

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

(6) Hvis du forsøger at forklare plan om oprettelse af visningserklæring

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

Håber du kan lide de forskellige måder at rette  ORA-fejlene på. Giv venligst feedback på det

Relaterede artikler
ORA-00911:ugyldigt tegn
ORA-29913:fejl under udførelse af ODCIEXTTABLEOPEN callout
ORA-27154:post/wait oprettelse mislykkedes under opstart
ORA-01111
ORA -00257 :arkiveringsfejl, tilslut kun internt indtil frigivet
ora-29283:ugyldig filoperation


  1. Tilslutning af SAP Lumira til Microsoft Access

  2. Værtspakke på Chokolade

  3. Nærmest match, del 1

  4. Sådan migreres MySQL fra Amazon EC2 til dit On-Prem Datacenter uden nedetid