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

ORA-00933:SQL-Befehl nicht ordnungsgemäß beendet

In .net, wenn wir versuchen, eine einzelne Oracle SQL-Anweisung mit einem Semikolon am Ende auszuführen. Das Ergebnis ist ein Orakelfehler:ora-00911:ungültiges Zeichen. OK, Sie stellen sich vor, dass eine SQL-Anweisung das Semikolon nicht benötigt, aber was ist mit der Ausführung von 2 SQL-Anweisungen in einer Zeichenfolge, zum Beispiel:

Dim db As Database = DatabaseFactory.CreateDatabase("db")
Dim cmd As System.Data.Common.DbCommand
Dim sql As String = ""

sql = "DELETE FROM iphone_applications WHERE appid = 1; DELETE FROM iphone_applications WHERE appid = 2; "

cmd = db.GetSqlStringCommand(sql)
db.ExecuteNonQuery(cmd)

Der obige Code gibt Ihnen den gleichen Oracle-Fehler:ora-00911:invalid character.

Die Lösung für dieses Problem besteht darin, Ihre 2 Oracle SQL-Anweisungen mit einem BEGIN einzuschließen und END; Syntax, zum Beispiel:

sql = "BEGIN DELETE FROM iphone_applications WHERE appid = 1; DELETE FROM iphone_applications WHERE appid = 2; END;"

Mit freundlicher Genehmigung:http://www.lazyasscoder.com/Article.aspx?id=89&title=ora-00911%3A+invalid+character+when+executing+multiple+Oracle+SQL+statements