В .net, когато се опитваме да изпълним единичен SQL оператор на Oracle с точка и запетая в края. Резултатът ще бъде грешка в оракула:ora-00911:невалиден знак. Добре, смятате, че един SQL израз не се нуждае от точка и запетая, но какво да кажем за изпълнение на 2 SQL оператора в един низ например:
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)
Кодът по-горе ще ви даде същата грешка на Oracle:ora-00911:невалиден знак.
Решението на този проблем е да обвиете вашите 2 Oracle SQL оператора с BEGIN
и END;
синтаксис, например:
sql = "BEGIN DELETE FROM iphone_applications WHERE appid = 1; DELETE FROM iphone_applications WHERE appid = 2; END;"
С любезното съдействие:http://www.lazyasscoder.com/Article.aspx?id=89&title=ora-00911%3A+invalid+character+when+executing+multiple+Oracle+SQL+statements