Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да разрешите ORA-00900

ORA-00900 невалидният SQL оператор е една от често срещаните грешки
Ето какво казва документацията на Oracle за тази грешка

Справка:Документация на Oracle

Контролен списък за разрешаване на невалидния SQL изявление ORA-00900

(1) Тази грешка често се появява, когато се опитвате да създадете процедура на Oracle и опцията Procedural не е инсталирана. За да определите дали процедурата е инсталирана, отворете сесия на Oracle с помощта на SQL*Plus. Ако PL/SQL банерът не се показва, значи знаете, че процедурата опция не е инсталирана.

(2) ORA-00900 може да възникне при опит за използване на връзка към база данни. Много потребители откриват, че се сблъскват с ORA-00900, докато се опитват да заявят полета, които може да са работили преди 2000 г. За да разрешите ORA-00900, в локалната база данни, опитайте да промените параметъра на init.ora NLS_DATE_FORMAT, след което използвайте двойни кавички (вместо единична) около стойността


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

(3) Използване на оператор за изпълнение на sql разработчик /JDBC връзка

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

execute е опция sqlplus, трябва да използваме някоя от опциите по-долу в приложни/другоезикови програми

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

(4) Много пъти разработчиците правят грешки в блока plsql и пишат изявления като

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

Горният код дава ORA-00900 като dbms_utility.analyze_schema(‘OKX’,’ESTIMATE’,30);
не е валидно изявление

Поправката е да използвате начало и край, както е посочено по-долу

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

(5) Ако искате да опишете таблица в 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

Тук не можете да използвате desc. може да искаме да го изберем въз основа на заявка

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

(6) Ако се опитвате да обясните план за изявление за създаване на изглед

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

Надяваме се, че ви харесват различните начини за коригиране на грешките ORA. Моля, дайте отзиви за него

Сродни статии
ORA-00911:невалиден знак
ORA-29913:грешка при изпълнение на извикване на ODCIEXTTABLEOPEN
ORA-27154:неуспешно публикуване/изчакване на създаване по време на стартиране
ORA-01111
ORA -00257 :грешка в архиватора, свързване само вътрешно до освобождаване
ora-29283:невалидна файлова операция


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Можем ли да имаме множество WITH AS в един sql - Oracle SQL

  2. формат интервал с to_char

  3. Как да създадете процедура в Oracle SQL Developer?

  4. Разделяне на стойности, разделени със запетая в Oracle

  5. Как да деактивирате тригера в Oracle SQL Developer?