Oracle "Invalid ROWID" error when performing a dataset.fill() RRS feed

  • Question

  • Hey guys,

    I was wondering if anyone knew of a way around this issue.  I have an application that reads data and fills a dataset from Oracle stored procedures.  The purpose of this information is to run report stored procedures, retrieve the data and put it in a form to easily verify data placement on the form and formula calculations.  I have the connection working and everything but on certain stored procedures I get the error "ora-01410: Invalid ROWID".  After some research it seems to be an issue that an Oracle temporary table that the stored proc uses has a "ON COMMIT DELETE ROWS" command, and so the rows are getting deleted before the c# dataset.fill() command is finished.  

    I cannot change the stored procedure, as I am in QA and the stored proc is made by the product development team, and thus do not have the authority to get this changed.  Furthermore, the product development team claim that the temp table is needed for the proc.

    Is there any way in C# to work around this, and to retrieve all the rows before Oracle decides to dump them all?
    • Moved by OmegaMan Tuesday, May 12, 2009 9:38 PM (From:Visual C# General)
    Tuesday, May 12, 2009 12:39 PM

All replies

  • Probably doubtful since Oracle is not sending them back to the client.  Have you tried running the same stored procedure from SQL*Plus to see if it returns the rows?  If you don't see the rows in SQL*Plus then our driver will not see them either.
    Wednesday, May 13, 2009 4:29 AM
  • It would probably help to see exactly what the stored procedure is doing, but it sounds to me like it's a design problem with respect to concurrency. As Matt is implying I don't think it can be resolved on the client (.NET code) side.
    Paul ~~~~ Microsoft MVP (Visual Basic)
    Wednesday, May 13, 2009 1:25 PM