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