sql >> Databasteknik >  >> RDS >> Oracle

Så här löser du ORA-00900

ORA-00900 ogiltig SQL-sats är ett av de vanligaste felen
Här är vad Oracle-dokumentationen säger om det här felet

Referens:Oracle-dokumentation

Checklista för att lösa ORA-00900 ogiltiga SQL-sats

(1) Det här felet uppstår ofta när du försöker skapa en Oracle-procedur och Proceduralternativet inte är installerat. För att avgöra om Proceduralternativet har installerats, öppna en Oracle-session med SQL*Plus. Om PL/SQL-bannern inte visas vet du att Proceduralternativet inte har installerats.

(2) ORA-00900 kan uppstå när man försöker använda en databaslänk. Många användare upptäcker att de stöter på ORA-00900 när de försöker fråga efter fält som kan ha fungerat före 2000. För att lösa ORA-00900, försök att ändra din init.ora-parameter NLS_DATE_FORMAT i den lokala databasen, använd sedan dubbla citattecken (istället för singel) runt värdet


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

(3) Använder execute-satsen på sql-utvecklare /JDBC-anslutning

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

execute är sqlplus-alternativet, bör vi använda något av alternativen nedan i program/andra språkprogram

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

(4) Många gånger gör utvecklare misstag i plsql-blocket och skriver uttalanden som

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

Ovanstående kod ger ORA-00900 som dbms_utility.analyze_schema(‘OKX’,’ESTIMATE’,30);
är inte ett giltigt påstående

Fixningen är att använda start och slut enligt nedan

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

(5) Om du vill beskriva en tabell 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 inte använda desc här. vi kanske vill välja det baserat på fråga

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

(6) Om du försöker förklara planen på skapa vy uttalande

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

Hoppas du gillar de olika sätten att åtgärda  ORA-felen. Lämna gärna feedback om det

Relaterade artiklar
ORA-00911:ogiltigt tecken
ORA-29913:fel vid exekvering av ODCIEXTTABLEOPEN-anrop
ORA-27154:post/wait skapa misslyckades under uppstart
ORA-01111
ORA -00257 :arkiveringsfel, anslut endast internt tills det frigörs
ora-29283:ogiltig filoperation


  1. Hur förhindrar jag automatisk avstängning av SQL Server LocalDB?

  2. Lär dig hur du skapar PK från Sequence Trigger i SQL Developer

  3. Hur LÅT SOM fungerar i MariaDB

  4. Skapa kapslade JSON-arrayer med FOR JSON PATH