Oracle
 sql >> Base de données >  >> RDS >> Oracle

ORA-00900 :erreur d'instruction SQL non valide ? Quel est le problème avec mon SQL ?

Votre client DB Solo semble interpréter le premier point-virgule qu'il voit comme la fin de l'instruction, ce qui est raisonnable pour le SQL brut (DML ou DDL) mais pas pour le PL/SQL.

Vous pouvez le voir à partir de l'image du journal que vous avez publiée ; il traite la create function ... v_ids integer part comme une seule instruction car cela se termine par le premier point-virgule - il compile mais avec une erreur. Ensuite, il prend le morceau suivant, jusqu'au prochain point-virgule, en tant qu'instruction séparée - v_str varchar2(5000) - et c'est lui qui obtient l'ORA-00900, car ce n'est pas du SQL valide.

Selon la documentation :

Donc, sur cette base, il ne semble pas comprendre comment traiter PL/SQL différemment; mais vous pouvez modifier vos paramètres pour ne pas traiter les points-virgules comme des séparateurs d'instructions - dans tous les domaines, ce qui signifie que vous devrez ajouter GO après le create type et create function relevés et toute autre demande ou appel que vous faites. Cela reviendrait à utiliser / partout dans SQL*Plus ou SQL Developer.

Il peut être plus simple d'utiliser l'éditeur de procédures . Vraisemblablement après avoir créé le type et la fonction à partir de le navigateur d'objets .

Ou, bien sûr, utilisez un autre client...