Din DB Solo-klient ser ud til at fortolke det første semikolon, den ser som slutningen af sætningen, hvilket er rimeligt for almindelig SQL (DML eller DDL), men ikke for PL/SQL.
Det kan du se fra logbilledet, du har lagt op; den behandler create function ... v_ids integer
del som én sætning, fordi det ender med det første semikolon - det kompilerer, men med en fejl. Derefter tager det den næste del, op til næste semikolon, som en separat sætning - v_str varchar2(5000)
- og det er det, der får ORA-00900, da det ikke er gyldig SQL.
Så baseret på det ser det ikke ud til at forstå, hvordan man behandler PL/SQL anderledes; men du kan ændre dine indstillinger til ikke at behandle semikolon som sætningsseparatorer - over hele linjen, hvilket betyder, at du skal tilføje GO efter både create type
og create function
erklæringer og andre forespørgsler eller opkald, du foretager. Dette ville svare til at bruge /
overalt i SQL*Plus eller SQL Developer.
Det kan være nemmere at bruge procedureeditoren . Formentlig efter at du har oprettet typen og funktionen fra objektbrowseren .
Eller, selvfølgelig, brug en anden klient...