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