Din DB Solo-klient verkar tolka det första semikolon som den ser som slutet på satsen, vilket är rimligt för vanlig SQL (DML eller DDL) men inte för PL/SQL.
Du kan se det från loggbilden du lagt upp; den behandlar create function ... v_ids integer
del som ett påstående eftersom det slutar med det första semikolonet - det kompilerar men med ett fel. Sedan tar det nästa bit, upp till nästa semikolon, som en separat sats - v_str varchar2(5000)
- och det är det som får ORA-00900, eftersom det inte är giltig SQL.
Så utifrån det verkar det inte förstå hur man behandlar PL/SQL annorlunda; men du kan ändra dina inställningar för att inte behandla semikolon som satsavgränsare - över hela linjen, vilket innebär att du måste lägga till GO efter både create type
och create function
uttalanden och alla andra frågor eller samtal du gör. Detta skulle likna att använda /
överallt i SQL*Plus eller SQL Developer.
Det kan vara lättare att använda procedurredigeraren . Förmodligen efter att du har skapat typen och funktionen från objektwebbläsaren .
Eller, naturligtvis, använd en annan klient...