W .net, gdy próbujemy wykonać pojedynczą instrukcję Oracle SQL ze średnikiem na końcu. Wynikiem będzie błąd wyroczni:ora-00911:nieprawidłowy znak. OK, domyślasz się, że jedna instrukcja SQL nie potrzebuje średnika, ale co z wykonaniem dwóch instrukcji SQL w jednym ciągu, na przykład:
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)
Powyższy kod da ci ten sam błąd Oracle:ora-00911:nieprawidłowy znak.
Rozwiązaniem tego problemu jest umieszczenie 2 instrukcji Oracle SQL w BEGIN
i END;
składnia, na przykład:
sql = "BEGIN DELETE FROM iphone_applications WHERE appid = 1; DELETE FROM iphone_applications WHERE appid = 2; END;"
Dzięki uprzejmości:http://www.lazyasscoder.com/Article.aspx?id=89&title=ora-00911%3A+invalid+character+when+executing+multiple+Oracle+SQL+statements