sql >> Database teknologi >  >> RDS >> Oracle

ORA-00900:ugyldig SQL-sætningsfejl? Hvad er der galt med min sql?

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.

Ifølge dokumentationen :

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...




  1. Ulovlig blanding af sammenstillinger for operation 'concat'

  2. ved at bruge CASE i WHERE-sætningen

  3. hvordan man indsætter langstrenget orakelklob eller klat

  4. Parse SQL-fil med PL/SQL og DML/DDL ved hjælp af cx_Oracle i python