.netで、末尾にセミコロンが付いた単一のOracleSQLステートメントを実行しようとすると。結果は、Oracleエラーになります:ora-00911:無効な文字。 OK、1つのSQLステートメントにセミコロンは必要ないことがわかりますが、たとえば、1つの文字列で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つのOracleSQLステートメントを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 + execute + multiple + Oracle + SQL + statement