Faby wrote:
> Hi all,
> I am new to ruby so any help will be greatly appreciated.
> I am using ruby with oracle, and the following text is an extract of my
> programm. (A cursor is fecthing the rows of a sql query.)
>
> while row=cursor.fetch
> 		if(row[0]<4)
> 		   outputFile<<row[0].to_s+"\t"+row[1].to_s+"\n"
> 		elsif (row[0]>=4)
> 		   totalRow4+=row[1]
> 		end
> end
> What I need now is to be able to determine when my cursor has reached
> the last row of my query ie if row==last_row....
>
> I hope i explain myself clearly enough
> Thanks
> Faby

Two ways come to mind:
  1) first execute a count(*) cursor to get the number of records,
      then in the while loop   count the records so you know when
      you are on the last one.
or similarly
  2) Oracle tables have a psuedo-column called ROWNUM, which
      is a sequential number for a given records set. Execute a query
      to get the max(ROWNUM) for the query results, then in the while
      loop check for the row.ROWNUM equal to maxRowNum.

I also believe you can do a fetch_all to get all rows into an array,
but
this will depend on how much memory the data needs...

Cheers