Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

ORA-00933:comando SQL não finalizado corretamente


Em .net, quando tentamos executar uma única instrução Oracle SQL com um ponto e vírgula no final. O resultado será um erro oracle:ora-00911:caractere inválido. OK, você imagina que uma instrução SQL não precisa do ponto e vírgula, mas que tal executar 2 instruções SQL em uma string, por exemplo:
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)

O código acima lhe dará o mesmo erro do Oracle:ora-00911:caractere inválido.

A solução para este problema é envolver suas 2 instruções Oracle SQL com um BEGIN e END; sintaxe, por exemplo:
sql = "BEGIN DELETE FROM iphone_applications WHERE appid = 1; DELETE FROM iphone_applications WHERE appid = 2; END;"

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