Code: Select all
str := oraQuery.FieldByName('my_clob').AsString;
- at System.IntPtr.op_Explicit(IntPtr value)
at CoreLab.Dac.TCRBlobData.Read(UInt32 Position, UInt32 Count, IntPtr Dest)
at CoreLab.Dac.TBlob.Read(UInt32 Position, UInt32 Count, IntPtr Dest)
at CoreLab.Odac.TOraLob.Read(UInt32 Position, UInt32 Count, IntPtr Dest)
at CoreLab.Dac.TData.ReadBlob(UInt16 FieldNo, IntPtr RecBuf, Int32 Position, Int32 Count, IntPtr Dest, Boolean FromRollback, Boolean TrueUnicode)
at CoreLab.Dac.TBlobStream.Read(Byte[]& Buffer, Int32 Offset, Int32 Count)
at Borland.Vcl.TStream.Read(Byte[]& Buffer, Int32 Count)
at Borland.Vcl.TStream.ReadBuffer(Byte[] Buffer, Int32 Count)
at Borland.Vcl.TBlobField.GetAsString()
at Borland.Vcl.TField.get_AsString()
at DataModule.Data.Execute()
"Arithmetic operation resulted in an overflow."
ODAC 6.50.0.5034 for Delphi, C++Builder, and RAD Studio 2007 Trial
Oracle Server 9.2.0.7.0
Oracle Client 10.2.0
Win Server 2003 R2 Standart x64 Edition SP2
.Net 2.0 x64
Win x64
Code execute in COM+ server libriary throw exception System.OverflowException.
The same code as windows console application works fine.
Win x32
Under 32bit environment works fine in both mode.
Code: Select all
//example C#
void Execute()
{
using (TOraSession oraSession = new TOraSession(null))
{
oraSession.Password = "pwd";
oraSession.Username = "user";
oraSession.Server = "orcl";
oraSession.Open();
string r = oraSession.OracleVersion;
using (TSmartQuery q = new TSmartQuery(null))
{
q.Session = oraSession;
q.SQL.Text = "select my_clob from my_table";
q.ExecSQL();
while (!q.Eof)
{
TField f = q.FieldByName("my_clob");
if (!f.IsNull)
{
try
{
string blob = f.AsString;
}
catch (Exception e){}
}
q.Next();
}
}
}
}