Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.4k views
in Technique[技术] by (71.8m points)

oracle - ORA-01460: unimplemented or unreasonable conversion requested

When I run the following .Net code:

using (var c = Shared.DataSources.BSS1.CreateCommand())
{
    c.CommandText = "
Select c1, c2, c3, rowid 
From someSpecificTable 
Where 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();
    }
}

I get the following error:

ORA-01460: unimplemented or unreasonable conversion requested
ORA-02063: preceding line from XXX

This is not my database, and I don't have control over the select statements that I get, that table IS from a database link.

The funny thing is that if I add the following code just before the ExecuteReader it runs fine.

c.CommandText = c.CommandText.Replace("
", " ");

Unfortunately that is not a good solution in my case as I can't control to SQL nore can I change it that way.

As for the table itself, the columns are: c1 Number(5) c2 varchar2(40) c3 varchar2(20).

I know that ORA-02063 that comes after indicate something about a database link, but I looked in the synonim table and it didn't come from any database_link, and also I don't think that should affect database link.

I tried running the query without bound parameters, and it did work - but again bad practice to do so in a general term.

The trouble is that a competing tool that is not .Net based, is working and thus it's not a general problem.

I also couldn't reproduce the problem in my own environment, this is a customer database and site. I am using instant client 11.1.6.20 and also tested it with instant client 11.2.3.0

The db is 10 and the db link is to an oracle v8 database

Any help would be appreciated

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

This problem can be recreated with straight forward steps. That is, any SQL query having a string literal, in where clause, more than 4000 characters in length gives an error "ORA-01704: string literal too long"

But, when the same query is executed through JDBC it gives "ORA-01460: unimplemented or unreasonable conversion requested"


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...