DevTrain Startseite SharePoint Camp ? In 5 Tagen zum SharePoint Profi!  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren



 

Forum: ASP Classic | Thema: AW: Auslesen von CLOB aus Oracle über OraOLEDB | Von: G. Guest ( 14.12.2006 19:41)

Hallo,
Bei mir tritt der Fehler auch auf.
Ich war sehr überrascht über diese völlig irreführende Fehlermeldung!
Ursache ist ein Wert in einer Number-Spalte, der mehr Stellen hat, als die double-Spalte, in die reinselektiert wird, z. B. 0,333333333333333333333333333333333333333. Sowas wie "select 1.0 / 3.0 from dual" habe ich noch nicht ausprobiert - geht aber sicher auch schief.
Ich habe eine Client-Version 10.2.0.1.0, einen 10.1.0.2.0er Server und VS Studio 2005. Ich bekomme den Call-Stack:

Der Accessor ist kein Parameteraccessor.
Type : System.Data.OleDb.OleDbException
at System.Data.OleDb.OleDbDataReader.ProcessResults(OleDbHResult hr)
at System.Data.OleDb.OleDbDataReader.GetRowDataFromHandle()
at System.Data.OleDb.OleDbDataReader.GetValueBinding(MetaData info)
at System.Data.OleDb.OleDbDataReader.GetValues(Object[] values)
at System.Data.ProviderBase.DataReaderContainer.CommonLanguageSubsetDataReader.GetValues(Object[] values)
at System.Data.ProviderBase.SchemaMapping.LoadDataRow()
at System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping)
at System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
at System.Data.Common.DataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable)

Vorher hatte ich einen PC mit einem Oracle 9er Client (Version weiss ich nicht mehr), wo ich bei OraOLEDB keinen Fehler bekam.
Bei anderen Providern bekomme ich den Fehler "OCI-22053: Überlauffehler", z. B. beim Microsoft Oracle Client:

System.Data.OracleClient.OracleException: OCI-22053: Überlauffehler
at System.Data.OracleClient.OracleException.Check(OciErrorHandle errorHandle, Int32 rc)
at System.Data.OracleClient.OracleNumber.ToUInt32(OciErrorHandle errorHandle, Byte[] value)
at System.Data.OracleClient.OracleNumber.ToDecimal(OciErrorHandle errorHandle, Byte[] value)
at System.Data.OracleClient.OracleNumber.MarshalToDecimal(NativeBuffer buffer, Int32 valueOffset, OracleConnection connection)
at System.Data.OracleClient.OracleColumn.GetDecimal(NativeBuffer_RowBuffer buffer)
at System.Data.OracleClient.OracleColumn.GetValue(NativeBuffer_RowBuffer buffer)
at System.Data.OracleClient.OracleDataReader.GetValues(Object[] values)
at System.Data.ProviderBase.DataReaderContainer.CommonLanguageSubsetDataReader.GetValues(Object[] values)
at System.Data.ProviderBase.SchemaMapping.LoadDataRow()
at System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping)
at System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
at System.Data.Common.DataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable)

Beim 9er Oracle ODP-Provider ist alles OK, der 10er liefert:

System.OverflowException: Arithmetic operation resulted in an overflow.
at Oracle.DataAccess.Types.DecimalConv.GetDecimal(IntPtr numCtx)
at Oracle.DataAccess.Client.OracleDataReader.GetDecimal(Int32 i)
at Oracle.DataAccess.Client.OracleDataReader.GetValue(Int32 i)
at Oracle.DataAccess.Client.OracleDataReader.GetValues(Object[] values)
at System.Data.ProviderBase.DataReaderContainer.CommonLanguageSubsetDataReader.GetValues(Object[] values)
at System.Data.ProviderBase.SchemaMapping.LoadDataRow()
at System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping)
at System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
at System.Data.Common.DataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
at Oracle.DataAccess.Client.OracleDataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
at Oracle.DataAccess.Client.OracleDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable)

Der in der anderen Antwort in diesem Thread angesprochene Workaround mit dem Zahlen-Runden kommt aus verschiedenen Gründen für uns nicht in Frage.

Wir verwenden mit Bauchschmerzen den uralten MSDAOR OleDB-Provider - der macht bisher den wenigsten Ärger. Zugriff auf BLOB und CLOB-Spalten machen wir mit einem Package - das geht auch mit dem MSDAOR.

Unsere Erfahrung aus vielen Jahren Programmierung mit Oracle: Die Jungs können keine Treiber schreiben!

Viele Grüße,
Volker Reimann


Betreff Von Datum
Bei OraOLEDB 10.1.0.2.0 ...
... tritt kein Fehler auf!<br>Das soll einer verstehen.
G. Guest 14.12.2006 19:48

Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!

 Betreff:
 Nachricht: Den Beitrag finden Sie nun unter: http://beta.devtrain.de/foren Die Benutzerdaten und Foreninhalte von beta.devtrain.de und www.devtrain.de sind die selben.
Sie können sich dort sogar per RSS über neue Inhalte informieren lassen.
Bei Problemen bitte direkt Mail an asp [AT] ppedv.de.

 Signatur:

  



Login
Username:


Passwort:






Passwort vergessen?

Advanced Developers Conference vom 14.-15. Februar 2011

© Copyright 2003 ppedv AG