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

ORA-00933:comando SQL non terminato correttamente

In .net, quando proviamo a eseguire una singola istruzione Oracle SQL con un punto e virgola alla fine. Il risultato sarà un errore Oracle:ora-00911:carattere non valido. OK, capisci che un'istruzione SQL non ha bisogno del punto e virgola, ma per quanto riguarda l'esecuzione di 2 istruzioni SQL in una stringa, ad esempio:

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)

Il codice sopra ti darà lo stesso errore Oracle:ora-00911:carattere non valido.

La soluzione a questo problema è racchiudere le tue 2 istruzioni Oracle SQL con un BEGIN e END; sintassi, ad esempio:

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

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