ORA-01460: zażądano niezrealizowanej lub nieuzasadnionej konwersji
Po uruchomieniu następującego kodu .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();
}
}
Otrzymuję następujący błąd:
ORA-01460: unimplemented or unreasonable conversion requested
ORA-02063: preceding line from XXX
To nie jest moja baza danych i nie mam kontroli nad instrukcjami, które otrzymuję, ta tabela JEST z łącza bazy danych.
Zabawne jest to, że jeśli dodam następujący kod tuż przed ExecuteReader, działa dobrze.
c.CommandText = c.CommandText.Replace("\r\n", " ");
Niestety, w moim przypadku nie jest to dobre rozwiązanie, ponieważ nie mogę kontrolować do SQL nore, czy mogę to zmienić w ten sposób.
Jeśli chodzi o samą tabelę, kolumny to: c1 Numer (5) c2 varchar2 (40) c3 varchar2 (20).
Wiem, że ORA-02063, który przychodzi po, wskazuje coś na temat łącza do bazy danych, ale spojrzałem w tabelę synonim i nie pochodził on z żadnego link_bazy_danych, a także nie sądzę, że n powinno wpływać na łącze bazy danych.
Próbowałem uruchomić kwerendę bez powiązanych parametrów i to zadziałało - ale znowu zła praktyka, aby to zrobić w ogólnym znaczeniu.
Problem polega na tym, że konkurencyjne narzędzie, które nie jest oparte na .Net, działa i dlatego nie jest to ogólny problem.
Nie mogłem również odtworzyć problemu w moim własnym środowisku, jest to baza danych klientów i witryna. Używam klienta natychmiastowego 11.1.6.20, a także przetestowałem go z klientem natychmiastowym 11.2.3.0
Db to 10, a łącze db do bazy danych oracle v8
Każda pomoc byłaby doceniana