Я получаю ошибку оракула 00911 (недопустимый символ).Я надеюсь, что кто-то может помочь мне понять.
Я использую следующий код для выполнения оператора sql в моей базе данных oracle 11g:
private DataTable ExecuteQuery(DbCommand query) {
DataTable result = new DataTable();
using (DbConnection con = CreateConnection()) {
try {
query.Connection = con;
query.CommandTimeout = int.MaxValue; // don't impose a timeout
using (DbDataAdapter dataAdapter = factory.CreateDataAdapter()) {
dataAdapter.SelectCommand = query;
dataAdapter.Fill(result);
}
}
...
Если я дам что-то этой функции сDbCommand.CommandText
свойство типа "Select * from X;"
работает нормально, но с учетом "Select * from x where y;"
это вызовет исключение оракула 00911.Однако, если я уберу точку с запятой, она будет выполнена нормально.
Кто-нибудь знает, почему он может выдать ошибку недопустимого символа, если завершить оператор точкой с запятой только для операторов некоторых типов?
Обновление для ясности:
Точные запросы, которые я использовал для проверки ошибки, вызвавшей точку с запятой, были:
Этот запрос работал нормально: SELECT * FROM Machines;
Этот запрос сгенерировал ошибку ORA 0911: SELECT * FROM Machines WHERE ID = 47;
Хотя этот запрос работал нормально: SELECT * FROM Machines WHERE ID = 47
<- изменилась только точка с запятой </p>
Также используется поставщик Oracle.DataAccess.Client