2011-04-14 15 views
0

我使用ODP.NET(版本2.111.7.0)和C#,的OracleCommand &的OracleParameter对象和OracleCommand.ExecuteNonQuery方法插入团块通过dblink的尺寸限制

我想知道如果有一种方法来通过数据库链接将大字节数组插入驻留在另一个数据库中的Oracle表中。我知道通过数据库链接处理吊球通常是有问题的,但我有点犹豫是否要修改代码并添加另一个连接。

将创建一个存储过程,采取BLOB作为参数,并通过DBLINK内部会谈有什么区别?不这么认为..

我目前的情况是,Oracle会给我“ORA-22992:无法使用从远程表中选择的LOB定位符”,只要我用OracleCommand传递的参数是长度为0的字节数组,或长度> 32KB(我怀疑,因为20KB的工作,35KB没有)

我使用OracleDbType.Blob这个参数。

谢谢。

什么想法?

回答

0

我结束了使用第二个连接,同步两个事务,以便提交和回滚总是联合执行。我最终还是认为通过dblink处理BLOB存在一个普遍问题,所以第二个连接是更好的选择,但在我的情况下,我的应用程序的设计稍微中断了 - 需要引入第二个连接和第二个连接交易。其他选择是尝试使用PL/SQL块和某些形式的DBMS_LOB.WRITEAPPEND以32k的块形式插入blob,但这需要对代码进行更深入的更改(在我的情况中),因此我选择了更简单,更直接的第一个解决方案。