2013-10-28 21 views
0

我正在使用Simple.Data.Oracle在表中插入數據。我試圖在其中一列中插入一個非常大的值,它給我提供以下錯誤:ORB-22835:用於存儲文件的緩衝區直到CLOB爲止ELB BLOB直到RAW(faktisk:19471,最大值:4000)使用Simple.Data.Oracle時緩衝區溢出錯誤

我是一個很長的路要走領先於項目不起轉儲Simple.Data.Oracle,尋找此刻其他候補......

+0

謝謝本,但我想插入整個值取一個子字符串將不會對我有用。他們是在Simple.Data.Oracle中聲明CLOB類型參數的方式嗎? –

回答

0

你一個CLOB轉換成一些描述的字符串。 SQL中的字符串中最多有4,000個字符,因此如果要將其放入字符中,您需要獲取CLOB的子字符串。

最簡單的方法是使用DBMS_LOB.SUBSTR

似乎simple.data.oracle本身並不支持CLOB;如果你看一下the code for the DBTypeConverter class字典中CLOB映射到DBType.String

{"CLOB", DbType.String}, 

儘管這是the documentation linked in the comments表明它應該被映射到DBType.Object。雖然映射在11.2 documentation中稍有變化,但CLOB仍然是一個對象。

我不知道的原因,決定一個CLOB是一個字符串,但我看到它,你有幾種選擇:

  1. 提高GitHub上的bug報告,並準備它不是被告知一個錯誤。
  2. 拉一個版本並自己更改它 - 請注意,由於CLOB被假定爲字符串,因此可能會進行很多更改。
  3. 使用DBMS_LOB.SUBSTR並將CLOB「分塊」成與使用偏移參數所需的那樣多的字符串。
+0

感謝Ben,我最終在這個特定案例中使用了ODP.Net,因爲我真的無法承擔更多時間尋找永久解決方案。 –