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

Come risolvere ORA-00900

ORA-00900 L'istruzione SQL non valida è uno degli errori più comuni
Ecco cosa dice la documentazione di Oracle su questo errore

Riferimento:documentazione Oracle

Elenco di controllo per risolvere l'istruzione SQL ORA-00900 non valida

(1) Questo errore si verifica comunemente quando si tenta di creare una procedura Oracle e l'opzione procedurale non è installata. Per determinare se l'opzione procedurale è stata installata, aprire una sessione Oracle utilizzando SQL*Plus. Se il banner PL/SQL non viene visualizzato, allora sai che l'opzione procedurale non è stata installata.

(2) ORA-00900 può verificarsi durante il tentativo di utilizzare un collegamento al database. Molti utenti scoprono che stanno riscontrando ORA-00900 mentre tentano di interrogare campi che potrebbero aver funzionato prima del 2000. Per risolvere ORA-00900, sul database locale, prova a modificare il tuo parametro init.ora NLS_DATE_FORMAT, quindi usa le virgolette (invece di singolo) attorno al valore


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

(3) Utilizzo dell'istruzione di esecuzione sulla connessione sql developer /JDBC

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

esegui è l'opzione sqlplus, dovremmo usare una delle seguenti opzioni in programmi applicativi/altri linguaggi

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

(4) Molte volte gli sviluppatori commettono errori nel blocco plsql e scrivono istruzioni come

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

Il codice sopra fornisce ORA-00900 come dbms_utility.analyze_schema('OKX','ESTIMATE',30);
non è una dichiarazione valida

La soluzione consiste nell'usare inizio e fine come indicato di seguito

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

(5) Se vuoi descrivere una tabella in 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

Non puoi usare desc qui. potremmo volerlo selezionare in base alla query

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

(6) Se stai cercando di spiegare il piano, crea una dichiarazione di visualizzazione

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

Spero che ti piacciano i vari modi per correggere gli errori ORA. Si prega di fornire feedback su di esso

Articoli correlati
ORA-00911:carattere non valido
ORA-29913:errore nell'esecuzione del callout ODCIEXTTABLEOPEN
ORA-27154:creazione post/attesa non riuscita durante l'avvio
ORA-01111
ORA -00257 :errore dell'archiviatore, connessione interna solo fino alla liberazione
ora-29283:operazione file non valida