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:невалидна файлова операция