[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