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

ORA-00900:erro de instrução SQL inválida? O que há de errado com meu sql?


Seu cliente DB Solo parece estar interpretando o primeiro ponto e vírgula que vê como o final da instrução, o que é razoável para SQL simples (DML ou DDL), mas não para PL/SQL.

Você pode ver isso na imagem de log que você postou; trata a função create function ... v_ids integer parte como uma instrução porque termina com o primeiro ponto e vírgula - ele compila, mas com um erro. Em seguida, leva o próximo pedaço, até o próximo ponto e vírgula, como uma instrução separada - v_str varchar2(5000) - e é isso que recebe o ORA-00900, pois não é SQL válido.

De acordo com a documentação :

Então, com base nisso, parece não entender como tratar PL/SQL de maneira diferente; mas você pode alterar suas configurações para não tratar os pontos e vírgulas como separadores de instruções - em geral, o que significa que você precisa adicionar GO após o create type e create function declarações e quaisquer outras consultas ou ligações que você fizer. Isso seria semelhante ao uso de / em qualquer lugar no SQL*Plus ou SQL Developer.

Pode ser mais fácil usar o editor de procedimentos . Presumivelmente, depois de criar o tipo e a função no navegador de objetos .

Ou, claro, use um cliente diferente...