Я пытаюсь получить данные CLOB через ODP.NET. Моя проблема в том, что reader.GetValue (i) .ToString() может возвращать только до 4000 символов, а остальная часть данных усекается. Если я использую reader.GetOracleClob (1) .Value Я получил ошибку «Указанный приведение недействителен».Как получить Oracle Clob более 4000 символов ODP.NET
Любая идея, что я пропустил? Я использую ODP.NET 4.0
Ниже мой код.
using (OracleConnection oConn = new OracleConnection())
{
oConn.ConnectionString = pConnstr;
oConn.Open();
using (OracleCommand oCmd = new OracleCommand("select varchar_column, clob_column from test", oConn))
{
oCmd.InitialLOBFetchSize = -1;
string key, value, value1;
var rd = oCmd.ExecuteReader();
while (rd.Read())
{
if (rd.IsDBNull(1)) { value = ""; }
else
{
key = rd.GetValue(0).ToString();
value = rd.GetValue(1).ToString(); // unable to get more than 4000.
value1 = rd.GetOracleClob(1).Value; // Specified cast is not valid.
}
}
}
}
я нашел в Oracle Doc, что когда свойство InitialLOBFetchSize устанавливается в ненулевое значение, GetOracleBlob, GetOracleClob, GetOracleBlobForUpdate и GetOracleClobForUpdate напечатал методы доступа отключены. Это может помочь объяснить, почему я получил ошибку «Указанный приведение недействителен».
Однако я все еще не могу получить данные за пределами 4000.
Я пробовал различные комбинации, задокументированные здесь http://docs.oracle.com/cd/E11882_01/win.112/e18754/featData.htm#autoId6 Но не повезло.