Oracle
 sql >> Datenbank >  >> RDS >> Oracle

ORA-00900:Fehler bei ungültiger SQL-Anweisung? Was stimmt nicht mit meiner SQL?

Ihr DB Solo-Client scheint das erste Semikolon, das er sieht, als Ende der Anweisung zu interpretieren, was für einfaches SQL (DML oder DDL) sinnvoll ist, aber nicht für PL/SQL.

Sie können das aus dem von Ihnen geposteten Log-Bild ersehen; es behandelt die create function ... v_ids integer Teil als eine Anweisung, weil diese mit dem ersten Semikolon endet - es wird kompiliert, aber mit einem Fehler. Dann nimmt es den nächsten Block bis zum nächsten Semikolon als separate Anweisung - v_str varchar2(5000) - und es ist das, was ORA-00900 bekommt, da es kein gültiges SQL ist.

Laut Dokumentation :

Basierend darauf scheint es nicht zu verstehen, wie man PL/SQL anders behandelt; Sie können Ihre Einstellungen jedoch so ändern, dass die Semikolons nicht als Anweisungstrennzeichen behandelt werden - auf der ganzen Linie, was bedeutet, dass Sie GO nach beiden create type hinzufügen müssen und create function Aussagen und alle anderen Fragen oder Anrufe, die Sie tätigen. Dies wäre vergleichbar mit der Verwendung von / überall in SQL*Plus oder SQL Developer.

Es kann einfacher sein, den Prozedur-Editor zu verwenden . Vermutlich nachdem Sie den Typ und die Funktion aus dem Objektbrowser erstellt haben .

Oder natürlich einen anderen Client verwenden...