sql >> Database >  >> RDS >> Oracle

ORA-00900:ongeldige SQL-instructiefout? Wat is er mis met mijn sql?

Uw DB Solo-client lijkt de eerste puntkomma die hij ziet als het einde van de instructie te interpreteren, wat redelijk is voor gewone SQL (DML of DDL) maar niet voor PL/SQL.

Je kunt dat zien aan de logafbeelding die je hebt gepost; het behandelt de create function ... v_ids integer deel als één statement omdat dat eindigt met de eerste puntkomma - het compileert maar met een fout. Dan duurt het volgende stuk, tot aan de volgende puntkomma, als een afzonderlijke instructie - v_str varchar2(5000) - en het is datgene dat de ORA-00900 krijgt, aangezien het geen geldige SQL is.

Volgens de documentatie :

Dus op basis daarvan lijkt het niet te begrijpen hoe PL/SQL anders moet worden behandeld; maar u kunt uw instellingen wijzigen om de puntkomma's niet als scheidingstekens voor instructies te behandelen - over de hele linie, wat betekent dat u GO moet toevoegen na zowel het create type en create function verklaringen en alle andere vragen of oproepen die u plaatst. Dit zou vergelijkbaar zijn met het gebruik van / overal in SQL*Plus of SQL Developer.

Het kan gemakkelijker zijn om de procedure-editor te gebruiken . Vermoedelijk nadat u het type en de functie van de objectbrowser hebt gemaakt .

Of gebruik natuurlijk een andere client...




  1. Hoe kan ik de oudste vermeldingen in mijn SQL-resultaat verwijderen?

  2. LPAD() Functie in PostgreSQL

  3. Groeperen op vs Partitioneren op in Oracle

  4. hoe namen van partities in orakel te krijgen terwijl ik een datum invoer