[Mono-bugs] [Bug 323528] OracleDataAdapter.Fill fails for StoreProcedures

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Tue Sep 9 15:23:27 EDT 2008


https://bugzilla.novell.com/show_bug.cgi?id=323528

User webservices at landmarkdigital.com added comment
https://bugzilla.novell.com/show_bug.cgi?id=323528#c1


WebServices Group <webservices at landmarkdigital.com> changed:

           What    |Removed                                         |Added
----------------------------------------------------------------------------
                 CC|                                                |webservices at landmarkdigital.com
           Severity|Enhancement                                     |Critical




--- Comment #1 from WebServices Group <webservices at landmarkdigital.com>  2008-09-09 13:23:27 MDT ---
Update - still fails in 2.0, throws exception

When an OracleDataAdapter is employed to fill the contents of a DataTable from
the return value of an OUT cursor, the Fill() method crashes in a subsidiary
reference to the database connection (See first inline code example).  We work
around this by not using the OracleDataAdapter, and instead directly loading
the DataTable from the OracleDataReader created from the OUT cursor parameter.

-----------------------------------------------------------
With the following pl/sql stored procedure:
-----------------------------------------------------------

  ----------------------------------------------------------------------
  -- ListAuditSamples
  --   Returns a list of the exact timestamps of all the audit samples
  --   archived for the speciied station between the specified dates
  ----------------------------------------------------------------------
  PROCEDURE  ListAuditSamples
    (
      stationID        IN AUDIO_SAMPLE.BRDCST_STN_HIST_ID%type,
      dateRangeStart   IN AUDIO_SAMPLE.AUDIO_SAMPLE_TS%type,
      dateRangeEnd     IN AUDIO_SAMPLE.AUDIO_SAMPLE_TS%type,
      resultCursor    OUT SYS_REFCURSOR
    )
  AS
  BEGIN

      OPEN resultCursor FOR
    SELECT AUDIO_SAMPLE_TS, AUDIO_SAMPLE_ID
      FROM AUDIO_SAMPLE
     WHERE AUDIO_SAMPLE.BRDCST_STN_HIST_ID = stationID
       AND AUDIO_SAMPLE.AUDIO_SAMPLE_TS >= dateRangeStart
       AND AUDIO_SAMPLE.AUDIO_SAMPLE_TS <= dateRangeEnd
    ORDER BY AUDIO_SAMPLE.AUDIO_SAMPLE_TS;

  END; -- PROCEDURE  ListAuditSamples

-----------------------------------------------------------
using the following code:
-----------------------------------------------------------

System.Data.OracleClient.OracleCommand cmd = new OracleCommand(PKG_NAME +
".ListAuditSamples", this.connection);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add( CreateNumberParam("stationID", stationID) );

cmd.Parameters.Add( CreateDateParam("dateRangeStart", dateRangeStart) );

cmd.Parameters.Add( CreateDateParam("dateRangeEnd", dateRangeEnd) );

cmd.Parameters.Add( CreateCursorParam("resultCursor") );

System.Data.OracleClient.OracleDataAdapter oda = new OracleDataAdapter(cmd);
System.Data.DataSet dataSet = new DataSet();
oda.Fill(dataSet);


-----------------------------------------------------------
yields the following error:
-----------------------------------------------------------


System.ArgumentNullException: null key
Parameter name: key
  at System.Collections.Hashtable.get_Item (System.Object key) [0x00000]
  at System.Data.OracleClient.OracleConnectionPoolManager.GetConnectionPool
(OracleConnectionInfo info, Int32 minPoolSize, Int32 maxPoolSize) [0x00000]
  at System.Data.OracleClient.OracleConnection.Open () [0x00000]
  at System.Data.Common.DbDataAdapter.Fill (System.Data.DataSet dataSet, Int32
startRecord, Int32 maxRecords, System.String srcTable, IDbCommand command,
CommandBehavior behavior) [0x00000]
  at System.Data.Common.DbDataAdapter.Fill (System.Data.DataSet dataSet)
[0x00000]
  at Landmark.Services.MetaData.MetaDataDAL.ListAuditSamples (Decimal
stationID, DateTime dateRangeStart, DateTime dateRangeEnd) [0x00000]
  at Landmark.Services.MetaData.MetaDataWrangler.ListAuditSamples (Decimal
stationID, DateTime dateRangeStart, DateTime dateRangeEnd) [0x00000]
  at Landmark.WebServices.MetaData.MetaDataService.ListAuditSamplesByDateRange
(Decimal stationID, DateTime dateRangeStart, DateTime dateRangeEnd) [0x00000]


-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.


More information about the mono-bugs mailing list