当我运行以下 .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
这不是我的数据库,我无法控制我得到的选择语句,该表来自数据库链接。
有趣的是,如果我在 ExecuteReader 之前添加以下代码,它运行良好。
c.CommandText = c.CommandText.Replace("\r\n", " ");
不幸的是,在我的情况下这不是一个好的解决方案,因为我无法控制 SQL,我也不能那样改变它。
至于表本身,列是: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 数据库
任何帮助,将不胜感激