Thread: Stepping through a table.

Stepping through a table.

From
Matthew Hagerty
Date:
Greetings,

If I need to process each record in a table, how can I step through each
record?  I suppose I could write a query to return all records and fetch
each row that way, but that would be a big memory pig, no?  Also, the table
could get pretty big.  Is there some way to navigate a table, maybe
fetching one record from the disk at a time, or something similar?

Thanks,
Matthew Hagerty



Re: [SQL] Stepping through a table.

From
Herouth Maoz
Date:
At 05:58 +0300 on 16/08/1999, Matthew Hagerty wrote:


> If I need to process each record in a table, how can I step through each
> record?  I suppose I could write a query to return all records and fetch
> each row that way, but that would be a big memory pig, no?  Also, the table
> could get pretty big.  Is there some way to navigate a table, maybe
> fetching one record from the disk at a time, or something similar?

I guess you are looking for cursors. Read about it on page 154 of the
PostgreSQL user guide, or check out the manpage about "declare". Note that
PostgreSQL cursors are readonly, and can't be used to update information.

Herouth

--
Herouth Maoz, Internet developer.
Open University of Israel - Telem project
http://telem.openu.ac.il/~herutma




Re: [SQL] Stepping through a table.

From
Matthew Hagerty
Date:
Thanks, I was thinking that's what cursors did, but I can't find a good
source anywhere that actually tells you that you are reading one record at
a time instead of submitting a whole query where the results are place in
memory.

You mentioned that cursors are read only.  Can I do update statements while
navigating with cursors?  Or do they lock the records they are reading?

Again, thank you.

Matthew

At 12:19 PM 8/16/99 +0300, Herouth Maoz wrote:
>At 05:58 +0300 on 16/08/1999, Matthew Hagerty wrote:
>
>
>> If I need to process each record in a table, how can I step through each
>> record?  I suppose I could write a query to return all records and fetch
>> each row that way, but that would be a big memory pig, no?  Also, the table
>> could get pretty big.  Is there some way to navigate a table, maybe
>> fetching one record from the disk at a time, or something similar?
>
>I guess you are looking for cursors. Read about it on page 154 of the
>PostgreSQL user guide, or check out the manpage about "declare". Note that
>PostgreSQL cursors are readonly, and can't be used to update information.
>
>Herouth
>
>--
>Herouth Maoz, Internet developer.
>Open University of Israel - Telem project
>http://telem.openu.ac.il/~herutma
>
>



Re: [SQL] Stepping through a table.

From
Herouth Maoz
Date:
At 23:52 +0300 on 16/08/1999, Matthew Hagerty wrote:


>
> You mentioned that cursors are read only.  Can I do update statements while
> navigating with cursors?  Or do they lock the records they are reading?

If they do, they only lock them to other transactions. Since you are within
the same connection and thus the same transaction (cursors can only be used
within BEGIN/END transaction blocks), of course the records are not locked.
As far as I know, you can make update statements. What I am not sure about
is what happens if you rewind the cursor and read the updated record again
- whether you will see the updated record or the non-updated one. You'll
have to test this.

Herouth

--
Herouth Maoz, Internet developer.
Open University of Israel - Telem project
http://telem.openu.ac.il/~herutma