Когда я запускаю следующий код .Net:
using (var c = Shared.DataSources.BSS1.CreateCommand())
{
c.CommandText = "\r\nSelect c1, c2, c3, rowid \r\nFrom someSpecificTable \r\nWhere c3 = :p0";
var p = c.CreateParameter() as Oracle.DataAccess.Client.OracleParameter;
c.Parameters.Add(p);
p.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Varchar2;
p.DbType = System.Data.DbType.AnsiString;
p.Size = 20;
p.Value = "007";
p.ParameterName = ":p0";
using (var r = c.ExecuteReader())
{
r.Read();
}
}
Я получаю следующую ошибку:
ORA-01460: unimplemented or unreasonable conversion requested
ORA-02063: preceding line from XXX
Это не моя база данных, и у меня нет контроля над получаемыми мной операторами select, эта таблица IS из ссылки на базу данных.
Забавно то, что если я добавлю следующий код непосредственно перед ExecuteReader, он будет работать нормально.
c.CommandText = c.CommandText.Replace("\r\n", " ");
К сожалению, в моем случае это не лучшее решение, так как я не могу контролировать SQL nore, могу ли я изменить его таким образом.
Что касается самой таблицы, столбцы: c1 Number (5) c2 varchar2 (40) c3 varchar2 (20).
Я знаю, что ORA-02063, который идет после, указывает что-то о ссылке на базу данных, но я посмотрел в таблице синонимов, и он не исходил ни из какой database_link, а также я не думаю, что \ r \ n должен влиять на ссылку на базу данных.
Я попытался выполнить запрос без связанных параметров, и это сработало, но опять же, в общем, это плохая практика.
Проблема в том, что конкурирующий инструмент, не основанный на .Net, работает, и поэтому это не общая проблема.
Я также не смог воспроизвести проблему в своей среде, это база данных клиентов и сайт. Я использую мгновенный клиент 11.1.6.20, а также тестировал его с мгновенным клиентом 11.2.3.0
Db - 10, а ссылка db - на базу данных oracle v8.
Любая помощь будет оценена