Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como resolver ORA-00900


ORA-00900 instrução SQL inválida é um dos erros comuns
Aqui está o que a documentação do oráculo diz sobre esse erro

Referência:documentação da Oracle

Lista de verificação para resolver a instrução SQL inválida ORA-00900


(1) Esse erro geralmente ocorre quando você está tentando criar um procedimento Oracle e a Opção de procedimento não está instalada. Para determinar se a Opção de procedimento foi instalada, abra uma sessão do Oracle usando o SQL*Plus. Se o banner PL/SQL não for exibido, você saberá que a Opção de procedimento não foi instalada.

(2) ORA-00900 pode ocorrer ao tentar usar um link de banco de dados. Muitos usuários descobrem que estão encontrando ORA-00900 ao tentar consultar campos que podem ter funcionado antes de 2000. Para resolver ORA-00900, no banco de dados local, tente alterar seu parâmetro init.ora NLS_DATE_FORMAT e use aspas duplas (em vez de único) em torno do valor

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

(3) Usando a instrução execute na conexão sql developer/JDBC
execute dbms_utility.analyze_schema('OKX','ESTIMATE',30);
ORA-00900: invalid SQL statement

execute é a opção sqlplus, devemos usar uma das opções abaixo em aplicativos/outros programas de linguagem
begin
execute dbms_utility.analyze_schema('OKX','ESTIMATE',30);
end;
or
begin
execute dbms_utility.analyze_schema('OKX','ESTIMATE',30)
end;
/

(4) Muitas vezes os desenvolvedores cometem erros no bloco plsql e escrevem instruções como
v_dynsql:='dbms_utility.analyze_schema('OKX','ESTIMATE',30)';
execute immediate v_dynsql;

O código acima fornece ORA-00900 como dbms_utility.analyze_schema('OKX','ESTIMATE',30);
não é uma declaração válida

A correção é usar begin e end conforme indicado abaixo
v_dynsql:=
q'[BEGIN
dbms_utility.analyze_schema('OKX','ESTIMATE',30);
END;]';
execute immediate v_dynsql;

(5) Se você deseja descrever uma tabela em 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

Você não pode usar desc aqui. podemos querer selecioná-lo com base na consulta
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 você está tentando explicar o plano de criação da declaração de visualização
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

Espero que você goste das várias maneiras de corrigir os erros ORA. Por favor, forneça feedback sobre isso

Artigos relacionados
ORA-00911:caractere inválido
ORA-29913:erro ao executar callout ODCIEXTTABLEOPEN
ORA-27154:post/wait create falhou durante a inicialização
ORA-01111
ORA -00257 :erro do arquivador, conectar apenas internamente até liberar
ora-29283:operação de arquivo inválida