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