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

questionAnswers(4)

yourAnswerToTheQuestion