[Mono-dev] Bug 486705 Update / Fix?
shaojiaxing at gmail.com
Fri Mar 20 08:21:29 EDT 2009
I had fix this problem by myself. I just add one line code "hasRows = true;"
before NextResult() "return true;". Because when use DataReader.Read() read
all rows from first cursor, the hasRows is set false. Then call NextResult()
not set hasRows = true and DataReader.Read() is check hasRows first, so the
bug come out.
Now working with multiple out REF cursor was prefect in my project. I don't
know whether this fix can solve the bug without causing other problem, but
> <P>I might have found the source of
> https://bugzilla.novell.com/show_bug.cgi?id=486705 Bug 486705 . For
> whatever reason, I am unable to create a
> https://secure-www.novell.com/selfreg/jsp/createAccount.jsp Novell account
> so if someone could post this info to that Bug on my behalf, it would be
> much appreciated.
> <code>NextResult()</code> of <code>OracleDataReader.cs</code> (Line 848)
> has a <code>//FIXME: get next result</code> comment in it that simply
> returns false - this should be changed to throw a
> <code>NotImplementedException</code>. Bug 486705 is simply that Mono does
> not currently support multiple result sets (ref cursors) but the lack of
> exceptions does not tell the user this. I think there are quite a few of
> these comments in the source, most if not all of them should be changed to
> We should also http://www.mono-project.com/Oracle document this , but I
> don't seem to have the ability to change that wiki page.
> <small><P>I wrote this a while back before I had the latest source code,
> but I thought I should just post it anyway for others to find when
> ExecuteReader(...) of System.Data.OracleClient.OracleCommand.cs (Line 580)
> does a for-loop over p (0 thru Parameters.Count), yet the loop itself does
> not use the loop-invariant (p) - instead it always uses '0' (i.e.
> Parameters on Line 581). The code in OracleCommand.cs, method
> GetNextResults() (Line 661) has the proper loop so my understanding is
> when Mono first gets the OracleDataReader/RefCursor, it should only get
> the first cursor. Later, command.NextResult() will be called by the user
> which will call GetNextResults() and properly get the next cursor.
> This would explain to my why ExecuteReader(...) never worked for me, as my
> OUT cursors were never the first parameter in the Stored Procedure. I've
> had to save a reference to the OracleParameter when I declare it and then
> use param.Value after a call to ExecuteNonQuery(...) (which does work fine
> for multiple cursor out parameters). I think this is a new bug, as I
> wasn't able to find anything about it when searching (other than the
> possibly related Bug 486705).
> This might explain Bug 486705 to me - Shao Jiaxing was able to get his
> first cursor out but couldn't get any data from any other cursors if the
> first parameter wasn't a cursor.
> In the least, I would like to add some comments/documentation to explain
> what is happening here - does anyone know why I can't create a Novell
> account? It seems to time out.
View this message in context: http://www.nabble.com/Bug-486705-Update---Fix--tp22604148p22619230.html
Sent from the Mono - Dev mailing list archive at Nabble.com.
More information about the Mono-devel-list