Ruby + oracle last row

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

Faby wrote:

  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

Faby wrote:

  end

end

When I need a look-ahead I sometimes do something like this:

nextrow = cursor.fetch
while row=nextrow
nextrow = cursor.fetch
if nextrow.nil?
p row #print last row
end
end

Daniel

Hi,Thank you for your answers. I managed to get my problem solved using
a count method. Thanks Daniel for your answer, i will try to implement
it now as it may be a quicker way.
Many thanks for your help
Faby

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs