Ruby + oracle last row

F

Faby

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
 
C

ChrisH

Faby said:
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
 
D

Daniel DeLorme

Faby said:
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

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
 
F

Faby

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,770
Messages
2,569,583
Members
45,074
Latest member
StanleyFra

Latest Threads

Top