Oracle
 sql >> Base de données >  >> RDS >> Oracle

ORA-00933 :La commande SQL ne s'est pas correctement terminée

Dans .net, lorsque nous essayons d'exécuter une seule instruction Oracle SQL avec un point-virgule à la fin. Le résultat sera une erreur oracle :ora-00911 :caractère invalide. OK, vous pensez qu'une instruction SQL n'a pas besoin du point-virgule, mais qu'en est-il de l'exécution de 2 instructions SQL dans une chaîne par exemple :

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)

Le code ci-dessus vous donnera la même erreur Oracle :ora-00911 :caractère invalide.

La solution à ce problème est d'envelopper vos 2 instructions Oracle SQL avec un BEGIN et END; syntaxe, par exemple :

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

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