Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak rozwiązać ORA-00900

ORA-00900 nieprawidłowa instrukcja SQL jest jednym z najczęstszych błędów
Oto, co dokumentacja Oracle mówi o tym błędzie

Odniesienie:dokumentacja Oracle

Lista kontrolna rozwiązywania nieprawidłowej instrukcji SQL ORA-00900

(1) Ten błąd często występuje, gdy próbujesz utworzyć procedurę Oracle, a opcja proceduralna nie jest zainstalowana. Aby sprawdzić, czy opcja proceduralna została zainstalowana, otwórz sesję Oracle za pomocą SQL*Plus. Jeśli baner PL/SQL nie wyświetla się, oznacza to, że wiesz, że opcja proceduralna nie została zainstalowana.

(2) ORA-00900 może wystąpić podczas próby użycia łącza do bazy danych. Wielu użytkowników napotyka ORA-00900, próbując wykonać zapytanie w polach, które mogły działać przed rokiem 2000. Aby rozwiązać ORA-00900 w lokalnej bazie danych, spróbuj zmienić parametr init.ora NLS_DATE_FORMAT, a następnie użyj podwójnych cudzysłowów (zamiast pojedynczy) wokół wartości


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

(3) Użycie instrukcji execute na połączeniu programisty sql /JDBC

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

execute jest opcją sqlplus, powinniśmy użyć jednej z poniższych opcji w aplikacjach/innych programach językowych

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

(4) Wiele razy programiści popełniają błędy w bloku plsql i piszą instrukcje, takie jak

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

Powyższy kod daje ORA-00900 jako dbms_utility.analyze_schema(‘OKX’,’ESTIMATE’,30);
nie jest prawidłowym oświadczeniem

Rozwiązaniem jest użycie początku i końca, jak podano poniżej

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

(5) Jeśli chcesz opisać tabelę w 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

Nie możesz tutaj użyć opisu. możemy chcieć wybrać go na podstawie zapytania

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

(6) Jeśli próbujesz wyjaśnić, zaplanuj utworzenie oświadczenia widoku

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

Mam nadzieję, że podobają Ci się różne sposoby naprawiania błędów ORA. Prosimy o przesłanie opinii na ten temat

Powiązane artykuły
ORA-00911:nieprawidłowy znak
ORA-29913:błąd podczas wykonywania objaśnienia ODCIEXTTABLEOPEN
ORA-27154:tworzenie post/wait nie powiodło się podczas uruchamiania
ORA-01111
ORA -00257 :błąd archiwizatora, łącz wewnętrzne tylko do czasu zwolnienia
ora-29283:nieprawidłowa operacja na pliku


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zmień separator funkcji WM_CONCAT w Oracle 11gR2

  2. Dodaj 2 miesiące do aktualnej sygnatury czasowej

  3. Instrukcje krok po kroku dotyczące instalacji Oracle Virtual Box

  4. Eksportuj dane do Excela z tabeli Oracle za pomocą PL SQL

  5. Pobierz typ danych pola w instrukcji select w ORACLE